ListView不会触发setOnLongClickListener,只触发setOnItemClickListener

时间:2011-07-07 07:54:47

标签: android listview android-listview onlongclicklistener

我想在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 个答案:

答案 0 :(得分:25)

您必须启用LongClickable

list.setLongClickable(true);

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

}
});

答案 1 :(得分:6)

@Vadim,你的listview的适配器是否从BaseAdapter扩展?如果是,那么还需要设置convertView.setLongClickable(true);在getView()中。

答案 2 :(得分:1)

对我来说,我必须在包含我的ListView 布局(而非ListView布局)的XML文件中设置android:longClickable="true",以便项目可以长按。

答案 3 :(得分:0)

如果回调消耗了长按,则

onLongClick返回true,否则返回false。因此,如果事件由此方法处理,则返回true。