if (convertView == null){ convertView = layoutInflater.inflate(R.layout.componlist_item,null); holder = new Holder(); holder.componname = convertView.findViewById(R.id.All_Compon_list_item_componname); holder.componbrand = convertView.findViewById(R.id.All_Compon_list_item_componbrand); holder.componprice = convertView.findViewById(R.id.All_Compon_list_item_componprice); holder.buycompon = convertView.findViewById(R.id.All_Compon_list_item_buy); convertView.setTag(holder);
时间: 2024-04-02 09:35:42 浏览: 50
这是一个条件语句,用于判断是否需要创建新的视图对象。如果 `convertView` 为 `null`,表示当前并没有可重用的视图对象,需要创建一个新的视图对象。否则,可以直接使用 `convertView` 中的视图对象,并更新其中的子视图对象的内容。
在该条件语句中,使用 `layoutInflater.inflate()` 方法来创建新的视图对象,并将其设置为 `convertView`。同时,创建一个新的 `Holder` 对象,并将其中的子视图对象与 `convertView` 中的对应子视图对象进行绑定。最后,使用 `setTag()` 方法将 `Holder` 对象保存到 `convertView` 的标签中,以便在下一次获取该列表项时可以直接使用。
该方法中的 `findViewById()` 方法用于查找视图中指定 ID 的子视图对象,并将其保存到 `Holder` 对象中,以便在下一次获取该列表项时可以直接使用。其中 `R.layout.componlist_item` 是一个 XML 布局文件的标识符,用于指定列表项的布局。
相关问题
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null){ holder = new ViewHolder(); convertView = LayoutInflater.from(mcontext).inflate(R.layout.sq_bookgrid,null); holder.booklist_bookname = convertView.findViewById(R.id.bookname); holder.booklist_author = convertView.findViewById(R.id.author); holder.booklist_inventory = convertView.findViewById(R.id.price); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } Book book = mBookList.get(position); holder.booklist_bookname.setText(book.getBookname()); holder.booklist_author.setText("主编/作者:" + book.getAuthor()); holder.booklist_inventory.setText("馆存:" + book.getinventory()+" 本"); return convertView;
这段代码是关于 Android 中 ListView 的 getView 方法的实现。在 ListView 中,getView 方法会在每个 item 显示时被调用,用于提供 item 的内容和显示方式。其中,convertView 是一个可重用的 View 对象,如果 convertView 不为 null,说明可以直接使用这个 View,否则需要通过 LayoutInflater.inflate 方法加载一个新的 View。 ViewHolder 是用来缓存 item 中的控件,避免重复 findViewById 的开销。最后,将 item 中的控件设置为对应的数据即可。
public View getView(int position, View convertView, final ViewGroup parent) { Holder holder = null; if (convertView == null){ convertView = layoutInflater.inflate(R.layout.componlist_item,null); holder = new Holder(); holder.componname = convertView.findViewById(R.id.All_Compon_list_item_componname); holder.componbrand = convertView.findViewById(R.id.All_Compon_list_item_componbrand); holder.componprice = convertView.findViewById(R.id.All_Compon_list_item_componprice); holder.buycompon = convertView.findViewById(R.id.All_Compon_list_item_buy); convertView.setTag(holder); }else { holder = (Holder) convertView.getTag(); } componBean componBean = arrpayinf.get(position); holder.componname.setText(componBean.getComponname()); holder.componbrand.setText(componBean.getBrand()); holder.componprice.setText("价格:"+componBean.getPrice().toString()); final View finalConvertView = convertView; final Holder finalHolder = holder; holder.buycompon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String componname = finalHolder.componname.getText().toString(); String username = MainActivity.loginusername; FormBody.Builder parms = new FormBody.Builder(); parms.add("username",username); parms.add("componname",componname); final Call call = okhttputil.request_post("/order/buycompon", parms); new Thread(new Runnable() { @Override public void run() { try { String string = call.execute().body().string(); JSONObject jsonObject = new JSONObject(string); mark = jsonObject.getString("code").equals("200"); handler.post(udpUIRunnable); }catch (Exception e){ e.printStackTrace(); } } }).start(); } }); return convertView;
这是一个 Android 中的 ListView 的 Adapter 的 getView 方法的实现,用于展示一个组件列表中的每一个组件的信息。具体来说,对于每一个组件,该方法从组件列表中获取对应位置的组件信息,然后使用 Holder 类来存储该组件的名称、品牌和价格等信息,并将这些信息填充到一个自定义的布局文件 R.layout.componlist_item 中,最后返回该布局文件作为该组件在 ListView 中的显示结果。此外,对于每一个组件,还有一个“购买”按钮,当用户点击该按钮时,该方法会向服务器发送购买请求,并在请求成功后更新 UI。
阅读全文