我正在使用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&#39;。有没有办法检索AlertDialog使用的列表对象?
或者是否有其他方法可以从仅知道列表中的项目位置来检索光标?
答案 0 :(得分:0)
如果您保留对游标适配器的引用,getItem(int position)
应该可以解决问题。
@Override
public void onClick(DialogInterface dialog, int which) {
Cursor c = cursorAdapter.getItem(which);
// do something with the cursor
}
在内部,这是调用cursor.moveToPosition(int)
,如果你按住光标就可以使用它。 (记得关闭它!)