如何从 AlertDialog 中的列表视图获取 onItemclick

How to get onItemclick from listview in a AlertDialog

我有一个 Activity,其中包含三个相同的按钮和三个相同的 TextView。每个按钮 onClick 通过以下代码调用一个 AlertDialog:

    PickerDialog = new PickerDialogFragment();
    PickerDialog.show(getSupportFragmentManager(), "PickerDialog");

我的 AlertDialog 有一个带有 addTextChangedListener 的 EditText

searchText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            adapter.getFilter().filter(s);
            adapter.notifyDataSetChanged();
        }
        @Override
        public void afterTextChanged(Editable s) {
        }
    });

列表视图适配器扩展了 cursoradapter 并实现了 filterable

listView.setTextFilterEnabled(true);
    adapter.setFilterQueryProvider(new FilterQueryProvider() {
        @Override
        public Cursor runQuery(CharSequence constraint) {
            return dbHelper.filterCodes(db, constraint); //returns a cursor
        }
    });

我想要实现的是直接更改用户从 AlertDialog 中的 Listview 中选择的值的按钮文本。

除此之外,如果可能的话,我想使用用户从过滤列表中选择的值来设置 edittext 的值,然后在单击肯定按钮时我将设置每个按钮的值

所以我的问题是 listview.onItemClickListener 和 builder.setPositiveButton 和 builder.setNegativeButton

里面有什么

我也无法确定哪个按钮调用了 AlertDialog,为每个按钮制作不同的警报对话框只会增加代码行数

将 'int resid' 参数添加到 class 的构造函数中。使用 'new PickerDialogFragment(R.id.button1);' 实例化您的对话框。在 findViewById 中使用 resid 获取按钮实例并设置其文本。