我是Android开发的初学者。
我有一个类型为android.R.layout.simple_list_item_checked的ListView,我试图将复选框设置为value,这是在我的Cursor名称“CHECKED”下。问题是我找不到复选框的id(我已经尝试过android.R.id.checkbox,但它没有用)但我不知道,如何基于我的Cursor设置它。游标是从SQLite数据库表创建的,其中“CHECKED”列是BOOLEAN类型。
我的代码无效:
lv.setAdapter(
new SimpleCursorAdapter(MainActivity.this, android.R.layout.simple_list_item_checked, mCursor,
new String[]{"NOTES", "CHECKED"}, new int[]{android.R.id.text1, android.R.id.checkbox}, 0));
你能帮助我吗?
提前谢谢。
答案 0 :(得分:0)
如果查看R.layout.simple_list_item_checked
xml文件,您会看到复选框ID为@android:id/text1
答案 1 :(得分:0)
简短的回答是,SimpleCursorAdapter
不就足以完成您想要的任务。
如果您查看其public void bindView(View view, Context context, Cursor cursor)
方法(这是魔术发生的地方,并且您的观点附加到您想要查看的数据),您可以验证SimpleCursorAdapter
如何执行此操作,以及它的逻辑没有用于绑定CheckedTextView
您可以在Google's code中找到自己:
if (v instanceof TextView) {
setViewText((TextView) v, text);
}
else if (v instanceof ImageView) {
setViewImage((ImageView) v, text);
}
else {
throw new IllegalStateException(v.getClass().getName() + " is not a " +
" view that can be bounds by this SimpleCursorAdapter");
}
你没有得到IllegalStateException的唯一原因是因为CheckedTextView扩展了TextView。