1

我有一个DialogFragment与之关联SimpleAdapter的监听点击。当我单击解雇本身中ListView的任何项目时。DialogFragment如何保持可见?

public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(getResources().getString(R.string.choose_file_for_import));
        mAdapter = new MAdapter(getActivity(), R.id.file_explorer_tv_filename, itemsList);

        builder.setAdapter(mAdapter, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int position) {
                File file = new File(pathList.get(position));

                        getDir(pathList.get(position));
                        mAdapter.notifyDataSetChanged();
    }
    return builder.create();
    }
4

3 回答 3

4

您有两个选择:
不要使用 AlertDialog.Builder 或设置OnClickListenerafter builder.create()

设置监听器后builder.create()

将适配器设置OnClickListenernull

builder.setAdapter(mAdapter, null);

在 builder.create() 分配之后OnItemClickListener

AlertDialog dialog = builder.create();
dialog.getListView().setOnItemClickListener(...);

我必须承认我没有测试过它,我只是查看了 Android 资源。

于 2012-08-22T16:42:01.353 回答
1

您可以尝试使用setSingleChoiceItems()而不是setAdapter(). 从文件:

  • adapter

    ListAdapter 提供项目列表

  • checkedItem

    指定检查哪个项目。如果 -1 则不检查任何项目。

  • listener

    单击列表中的项目时通知。单击项目时不会关闭对话框。只有在单击按钮时才会关闭它,如果没有提供按钮,则由用户决定关闭对话框。

所以它应该按照你想要的方式工作,只需使用 -1 作为checkedItem参数。

于 2012-08-26T11:38:08.473 回答
0

您需要覆盖 addapter 的 getView 并侦听 View onClick 侦听器,并且在此侦听器内部返回 false,这样它会告诉系统没有人处理此触摸事件。

看看这个样本

于 2012-08-28T07:14:23.740 回答