我对newView()
of 的CursorAdapter
工作原理有点困惑。我Cursor c
特别对框架传递给该方法的内容感兴趣。我有一个ListView
其中填充了一个CursorAdapter
包含 4 行的内容。经过一些debagging后,我看到两个不同Cursor c
的对象传递给了newView()
,这个事实让我感到困惑。
我期待不同Cursor
的传递给方法,Cursor
每个数据库中的不同对象row
。因此,考虑到这个假设,我在列表视图行的复选框元素上设置了 onClick 侦听器,但这很奇怪。
@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
View row;
final Cursor cursor = c;
LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
row = inflater.inflate(R.layout.row, parent, false);
this.defaultDrawable = (Drawable) row.getBackground();
final CheckBox mStar = (CheckBox) row.findViewById(R.id.star);
mStar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mStar.isChecked()) {
mDbHelper.updateFavorite(cursor, 1);
} else {
mDbHelper.updateFavorite(cursor, 0);
}
}
});
ViewHolder holder = new ViewHolder(row);
row.setTag(holder);
return (row);
}