在Cursor中设置simple_list_item_checked中的复选框

时间:2016-10-29 15:18:19

标签: java android checkbox

我是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));
你能帮助我吗? 提前谢谢。

2 个答案:

答案 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。