我有一个带有复选框的android.R.layout.simple_list_item_multiple_choice,所以请启动其中的一些。
我怎样才能做到这一点?
我有以下代码:

    private void fillList() {
    Cursor NotesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(NotesCursor);

    String[] from = new String[] { NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_BODY, NotesDbAdapter.KEY_CHECKED };

    int[] to = new int[] {
    android.R.id.text1,
    android.R.id.text2,
    //How set checked or not checked?
     };

    SimpleCursorAdapter notes = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, NotesCursor,
            from, to);
    setListAdapter(notes);

}

最佳答案

将行布局中复选框的资源ID放入to数组中,该数组对应于NotesDbAdapter.KEY_CHECKED数组中的from光标。
实现SimpleCursorAdapter.ViewBinder
ViewBinder.setViewValue()方法检查何时调用NotesDbAdapter.KEY_CHECKED列。
如果它不是KEY_CHECKED列,则让它返回false,适配器将执行其通常的操作。
当它是KEY_CHECKED列时,让它根据需要将CheckBox视图(必需的广播)设置为选中还是不选中,然后返回true,以使适配器不会尝试自身绑定它。游标和相应的列ID可用于访问查询数据,以确定是否选中此复选框。
通过setViewBinder()在您的SimpleCursorAdapter中设置ViewBinder


这是我的ViewBinder实现之一。它不是用于checboxes,而是用于对文本视图进行一些精美的格式设置,但是应该为您提供一些方法的思路:

private final SimpleCursorAdapter.ViewBinder mViewBinder =
    new SimpleCursorAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(
                final View view,
                final Cursor cursor,
                final int columnIndex) {
            final int latitudeColumnIndex =
                cursor.getColumnIndexOrThrow(
                        LocationDbAdapter.KEY_LATITUDE);
            final int addressStreet1ColumnIndex =
                cursor.getColumnIndexOrThrow(
                        LocationDbAdapter.KEY_ADDRESS_STREET1);

            if (columnIndex == latitudeColumnIndex) {

                final String text = formatCoordinates(cursor);
                ((TextView) view).setText(text);
                return true;

            } else if (columnIndex == addressStreet1ColumnIndex) {

                final String text = formatAddress(cursor);
                ((TextView) view).setText(text);
                return true;

            }

            return false;
        }
    };

09-07 01:38