显示AlertDialog onLongClick

时间:2012-05-08 08:37:49

标签: android dialog onclick alertdialog onlongclicklistener

我有一个listView和一个onClickListener,onClick做了som的东西,它的工作原理。现在我想在LongClick上显示一个AlertDialog,但没有任何反应。我已经将android:longClickable="true"添加到了清单中的ListView,但仍然没有任何反应。

listView.setOnLongClickListener(new OnLongClickListener() {

    public boolean onLongClick(View v) {

        final CharSequence[] items = {"Revansch!", "Lägg till som vän","Ta bort spelet"};

        AlertDialog.Builder builder = new AlertDialog.Builder(ChallengeList.this);

        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();
        return true;

    }

});

任何人都知道它为什么不起作用? 提前谢谢!

2 个答案:

答案 0 :(得分:4)

试试这个,

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> av, View v, int pos, final long id) {

       final CharSequence[] items = {"Revansch!", "Lägg till som vän","Ta bort spelet"};
       AlertDialog.Builder builder = new AlertDialog.Builder(ChallengeList.this);
       builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();

        return true;
    }
});

答案 1 :(得分:0)

我试过这个。它的工作。

myList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
            return onLongListItemClick(v,pos,id);
        }
        protected boolean onLongListItemClick(View v, final int pos, long id) {

            // write code for AlertDialog
            return true;
        }

    });

您还需要覆盖onItemLongClick方法。