ListView не запускает setOnLongClickListener, только setOnItemClickListener - PullRequest
7 голосов
/ 07 июля 2011

Я хотел бы иметь оба типа кликов в listView - onClick и LongClick.

Я реализовал это так:

this.listViewSub = (ListView) this.findViewById(R.id.listsub);

this.listViewSub.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(final AdapterView parent, final View view, final int position,
                final long id) { ... }    });

        // listen to long click - to share texts
    this.listViewSub.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) { ... } });

Но это не срабатываетДлинный Клик.У кого-нибудь есть идеи, почему?

Ответы [ 4 ]

25 голосов
/ 07 июля 2011

Вы должны включить LongClickable

list.setLongClickable(true);

и

list.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                final int arg2, long arg3) {

}
});
6 голосов
/ 17 января 2013

@ Вадим, адаптер вашего списка просмотра выходит из BaseAdapter?если да, то также необходимо установить convertView.setLongClickable (true);в getView ().

1 голос
/ 29 мая 2013

Мне пришлось установить android:longClickable="true" в XML-файле, который содержит макет моего ListView строки (не макет ListView), чтобы элемент можно было долго нажимать.

0 голосов
/ 07 июля 2011

onLongClick возвращает значение true, если обратный вызов использовал длинный щелчок, в противном случае - значение false. Поэтому, если событие обрабатывается этим методом, верните true.

...