到目前爲止,我已經看到了使用BaseAdapter
和ArrayAdapter<?>
的應用程序的幾個示例。但我仍然不完全清楚爲什麼應該這樣。適當使用BaseAdapter類具體getView方法
第一個例子是從ArrayAdapter<?>
延伸,此示例中的ListView使用的,以下是getView方法
@override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
Holder holder = null;
// Holder represents the elements of the view to use
// Here are initialized
if(null == row) {
row = LayoutInflater.from(mContext).inflate(LAYOUT_ITEM_ID, parent, false);
holder = new Holder();
holder.titleTextView = (TextView)row.findViewById(android.R.id.title);
row.setTag(holder);
} else {
holder = (Holder) row.getTag();
}
// here do operations in holder variable example
holder.titleTextView.setText("Title " + position);
return row;
}
public static class Holder {
TextView titleTextView;
}
現在在第二個例子的發現,使用BaseAdapter
上一個GridView這是getView方法
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
我的問題是:一個適當的使用適配器的情況是需要使用「持有人」靜態類,這是否會對應用程序的性能和兼容性上的多個設備有何影響(AP分鐘我8)。
這也適用於GridView? – rkmax 2013-04-08 21:41:35
是的。實際上,他們甚至在視頻中說他們的GridView和ListView幾乎完全相同 – Nek 2013-04-08 21:45:53