Alertdialog多个监听器

时间:2013-03-14 15:56:04

标签: android alertdialog onitemclicklistener onlongclicklistener

我创建了一个显示项目列表的对话框。

现在我还需要捕获长按事件以进行编辑。

这怎么可能成就?

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(R.string.select_a_person);
    final UserAdapter adapter = new UserAdapter(this);
    builder.setAdapter(adapter, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            selecteduUser = (User) adapter.getItem(which);
            if (selecteduUser != null) {
                mName.setText(selecteduUser.getName());
            }
        } 
    });
    builder.create().show();

1 个答案:

答案 0 :(得分:0)

目前我正在看两个解决方案

选项1:

创建自己的自定义对话框。使用列表视图(或任何您喜欢的listactivity)创建活动,并将其设置为对话框。

android:theme="@android:style/Theme.Dialog"

您可以轻松处理列表项单击。然后在启动此自定义对话框活动时,传递要显示的列表数据。

选项2:

在您的方法中的alertdialog中设置setOnShowListener。让我从你的最后一行代码编辑

AlertDialog dialog = builder.create();

dialog.setOnShowListener(new OnShowListener() 
{       
    @Override
    public void onShow(DialogInterface dialog) 
    {       
        ListView list = ad.getListView();
        list.setOnItemLongClickListener(new OnItemLongClickListener() 
        {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 
            {
                // DO your task
                return true;
            }           
        });     
    }
});
dialog.show();