问题描述
- Android ListView通过Cursor获取数据问题
-
一个便签应用,实现了基本的功能,现在就是Cursor获取数据看不懂,先简单说说几个相关的文件。
NoteListActivity在onCreate中绑定了一个NoteListAdapter,此Adapter的bindView代码如下:@Override public void bindView(View view, Context context, Cursor cursor) { if (view instanceof NotesListItem) { NoteItemData itemData = new NoteItemData(context, cursor); ((NotesListItem) view).bind(context, itemData, mChoiceMode, isSelectedItem(cursor.getPosition())); } }
NoteItemData类的构造函数中有一句是(其中静态常量TYPE_COLUMN=9):
mType = cursor.getInt(TYPE_COLUMN);
NotesListItem类继承自LinearLayout,其中bind方法部分代码如下:
这部分功能是,长按Item时,右边会出现CheckBox选择后可以进行删除操作,不知道if语句里面**为什么长按时data.getType() = Notes.TYPE_NOTE(Notes.TYPE_NOTE是常量0)?**public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { if (choiceMode && data.getType() == Notes.TYPE_NOTE) { mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(checked); } else { mCheckBox.setVisibility(View.GONE); }
NoteItemData的getType()方法如下:
public int getType() { return mType; }
NoteItemData还有一个方法是getNoteType:
public static int getNoteType(Cursor cursor) { return cursor.getInt(TYPE_COLUMN); }
这两个方法的内容是一样的,为什么getNoteType=1,getType在长按时=0,否则=1?
在线等高手回答,研究了好几天了
解决方案
时间: 2024-10-01 14:27:52