AlertDialog.Builder的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"。是否有方法检索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),如果您按住光标,就可以使用它。(记得关闭它!(

相关内容

  • 没有找到相关文章

最新更新