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; 翻译每一句代码
时间: 2024-04-23 07:23:58 浏览: 66
Android 通过ViewHolder优化适配器的实现方法(必看)
1. 首先定义了一个 getView 方法,用于提供 ListView 中每个 item 的内容和显示方式。
2. 定义了一个 ViewHolder 对象用于缓存 item 中的控件。
3. 判断 convertView 是否为 null,如果为 null,说明可以使用 LayoutInflater 加载一个新的 View,并将 ViewHolder 中的控件与该 View 中的控件绑定。
4. 如果 convertView 不为 null,说明该 View 可以被重复使用,直接使用 convertView.getTag() 方法获取 ViewHolder 对象即可。
5. 通过 mBookList.get(position) 方法获取 ListView 中当前位置的 Book 对象。
6. 将 ViewHolder 中的控件分别设置为 Book 对象中对应的数据。
7. 最后返回 convertView 作为当前 item 的显示内容。
阅读全文