我正在使用AlertDialog,它显示基于SimpleCursorAdapter:的单选列表
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setAdapter(cursorAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//here I need to access the selected item using a cursor
}
})
当在我的警报对话框中单击列表项时,会调用onClick函数。但是,它只向我提供所单击项目在显示列表中的位置。因为我想访问所选项目的SQLite数据库,所以我需要一个光标。那么,如何在构建器上调用"setOnItemClickListener"呢?我需要的是:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor cursor = (Cursor) parent.getItemAtPosition(position);
...
我的问题是,我没有列表对象本身来调用"setOnItemClickListener"。是否有方法检索AlertDialog使用的列表对象?
或者还有其他方法可以从只知道列表中项目的位置中检索光标吗?
如果您保留对游标适配器的引用,getItem(int position)
应该可以做到这一点。
@Override
public void onClick(DialogInterface dialog, int which) {
Cursor c = cursorAdapter.getItem(which);
// do something with the cursor
}
在内部,这是在调用cursor.moveToPosition(int)
,如果您按住光标,就可以使用它。(记得关闭它!(