用于AlertDialog.Builder的OnItemClick侦听器

时间:2016-10-09 14:33:47

标签: android alertdialog simplecursoradapter onitemclick

我正在使用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使用的列表对象?

或者是否有其他方法可以从仅知道列表中的项目位置来检索光标?

1 个答案:

答案 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),如果你按住光标就可以使用它。 (记得关闭它!)