Отображать диалоговое окно предупреждения при долгом клике

У меня есть listView и onClickListener, которые onClick делают что-то, и это работает. Теперь я хочу отобразить AlertDialog onLongClick, но ничего не происходит. Я также добавил 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;

    }

});

Кто-нибудь знает, почему это не работает? Заранее спасибо!


person simtaxman    schedule 08.05.2012    source источник


Ответы (2)


Попробуй это,

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;
    }
});
person user370305    schedule 08.05.2012

Я пробовал это. Это работает.

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.

person Krishna Suthar    schedule 08.05.2012