0

我有一个 listView 和一个 onClickListener , onClick 可以做一些事情并且它可以工作。现在我想在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;

    }

});

有谁知道为什么它不起作用?提前致谢!

4

2 回答 2

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;
    }
});
于 2012-05-08T08:47:06.167 回答
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 方法。

于 2012-05-08T08:46:13.547 回答