Mah*_*iya 31 database android android-cursoradapter
我总是ViewHolder在自定义ArrayAdapter类中使用模式.但是,CursorAdapter该getView()方法并非强制要求被覆盖,而是具有bindView和newView方法.
我的问题是 - 是CursorAdapter通过内部实现ViewHolder模式重新使用视图还是需要像我们通常在自定义中那样进行编码ArrayAdapter?如果需要编码,那么正确的方法是什么?
更新
我正在使用 android.support.v4.widget.CursorAdapter
Luk*_*rog 40
我的问题是 - CursorAdapter是通过内部实现ViewHolder模式重新使用视图还是需要像我们通常在自定义ArrayAdapter中那样进行编码?
我不确定你用这种ViewHolder模式来表达什么.如果你指的是每次都有一个helper类来缓存查找视图(并将其设置为行的标记View),那么答案就是否定.如果要实现此模式,则需要在方法中设置holder(在行视图中查找视图findViewById)newView,然后将其设置为行视图的标记.然后在bindView方法中,您可以调用getTag,检索持有者并使用它.一个例子:
// custom CursorAdapter ...
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View rowView = ((LayoutInflater) context
.getSystemService("layout_inflater")).inflate(
R.layout.row_layout, parent, false);
ViewHolder holder = new ViewHolder();
holder.v1 = rowView.findViewById(R.id.v1);
holder.v2 = rowView.findViewById(R.id.v2);
rowView.setTag(holder);
return rowView;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
// use the holder filled with views
// hlder.v1.setSomething
}
class ViewHolder {
View v1, v2;
}
// ...
Run Code Online (Sandbox Code Playgroud)
如果你指的convertView是被重用(比如在非Cursor基础的适配器中),那么答案是肯定的,该getView方法实现了这种模式,你只需要实现newView和bindView方法,你就可以得到一个被回收的视图(如果可能的话)那一刻).
| 归档时间: |
|
| 查看次数: |
7056 次 |
| 最近记录: |