获取checkedtextview检查的位置

时间:2011-09-06 11:34:09

标签: android listadapter

我有一个ListActivity,我做了这个

    Cursor cursor = getContentResolver().query(Phone.CONTENT_URI,
            new String[] { Phone._ID, Phone.DISPLAY_NAME }, null, null,
            null);
    startManagingCursor(cursor);
    String[] columns = new String[] { Phone.DISPLAY_NAME };
    int[] to = new int[] { R.id.name_row };
    ListAdapter mAdapter = new SimpleCursorAdapter(this,
            R.layout.contact_list_row, cursor, columns, to);
    this.setListAdapter(mAdapter);

绑定我的联系人姓名,不是我的listadapter。每一行都是一个checkedtext视图,所以知道我想创建一个方法来检索我检查过的项目,但是我无法让它工作。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

我不是100%肯定复选框,但我已经为按钮和其他元素做了这个,并且快速浏览一下,我觉得这个方法是一样的。

在复选框元素布局XML中插入android:onClick="methodName"

代码中的

与此函数类似:

//Called from XML
public void methodName(View view) {
    int cursorPosition= getListView().getPositionForView(view);
    Bundle itemData = (Bundle) mAdapter.getItem(cursorPosition);
    // do something with data
}

答案 1 :(得分:0)

所以我找到了自己的方式。问题是我使用的是checked_positions.get(i)而不是checked_positions.valueAt(i)。

            ListView lv = getListView();
            SparseBooleanArray checked_positions = lv.getCheckedItemPositions();
            for (int i = 0; i < checked_positions.size(); i++) {
                Log.d(TAG, "Checked " + i + " Value " + checked_positions.valueAt(i));
                if (checked_positions.valueAt(i)) {
                    Cursor ctv = (Cursor) lv.getItemAtPosition(checked_positions.keyAt(i));
                }
            }