您好,登錄后才能下訂單哦!
TextView在列表中的復用優化通常通過ViewHolder模式來實現,即通過一個ViewHolder類來保存TextView的引用,避免在每次getView()方法中都進行findViewById()查找視圖的操作。
下面是一個簡單的示例代碼:
public class MyAdapter extends ArrayAdapter<String> {
private static class ViewHolder {
TextView textView;
}
public MyAdapter(Context context, List<String> data) {
super(context, 0, data);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_layout, parent, false);
viewHolder = new ViewHolder();
viewHolder.textView = convertView.findViewById(R.id.text_view);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
String item = getItem(position);
if (item != null) {
viewHolder.textView.setText(item);
}
return convertView;
}
}
在上面的代碼中,ViewHolder類保存了TextView的引用,在getView()方法中首先判斷convertView是否為空,如果為空則通過LayoutInflater來加載布局并進行findViewById()操作,同時將ViewHolder保存到View的tag中。如果convertView不為空,則直接通過getTag()方法獲取ViewHolder。
通過使用ViewHolder模式,可以避免在每次getView()方法中都進行findViewById()查找視圖的操作,提升列表的性能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。