我有一個gridView,我在其中使用自定義適配器填充數據。爲此我重寫了getView()方法。然而,由於我的gridview是一個自定義的,我不得不使用一個靜態持有者類(如在線提供的許多示例中所見)。如果我不想使用持有者,我可以採用其他方式實施嗎?爲什麼使用getTag()和setTag()?我搜索了他們,但找不到足夠的解釋。適配器的持有者
holder類 -
static class RecordHolder{
ImageView imgView;
TextView txtView;
}
的getView方法 -
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
RecordHolder holder = new RecordHolder();
if (convertView == null) {
LayoutInflater inflater = (getActivity()).getLayoutInflater();
row = inflater.inflate(R.layout.grid_line, parent, false);
holder.imgView = (ImageView) row.findViewById(R.id.imageView);
holder.txtView = (TextView) row.findViewById(R.id.textView);
row.setTag(holder);
} else {
holder = (RecordHolder) row.getTag();
}
ResolveInfo resolveInfo = mAppList.get(position);
holder.imgView.setImageDrawable(resolveInfo.loadIcon(getActivity().getPackageManager()));
holder.txtView.setText(resolveInfo.loadLabel(getActivity().getPackageManager()));
return row;
}
謝謝,我通過** ViewHolder的** android [官方說明頁面](http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder),它澄清了很多。即使示例示例[here](http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html)也提供了一個很好的演示。 –