如何捕获ListActivity中Listview项的长按事件?

29

假设我有一个ListActivity,现在我想捕获列表项上的长按事件,为此我使用了以下代码块(从Google上找到的),但它不起作用!!! 请帮忙!

            public class InboxActivity extends ListActivity {

            this.getListView().setOnLongClickListener(new OnLongClickListener() {
                        @Override
                        public boolean onLongClick(View v) {
                            Toast.makeText(InboxActivity.this, "postion: " +    getListView().getSelectedItemPosition(), Toast.LENGTH_SHORT).show();
                            return true;
                        }
                    });

            }

我在网上看到一些包含上下文菜单代码的内容,但是我不知道如何获取打开上下文菜单的列表项的位置。

4个回答

62

我不知道你是否已经解决了问题,我几乎确定你已经解决了,但是这个方法可以解决。

this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
        //Do some
        return true;
    }
});

6

this.getListView().setOnItemLongClickListener 应该能够正常工作。


4
    (viewitem).setOnLongClickListener(new OnItemLongClickListener() {           
        @Override
        public boolean onLongClick(View v) {
            //your code here
            return false;
        }
    }

(这与以上答案略有不同)

2
应该使用OnItemLongClickListener事件而不是OnLongClickListener。 - Dilberted

3

我想你想知道如何获取数值..

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
                    public boolean onItemLongClick(AdapterView parentView, View childView, int position, long id) {
                                            // this will provide the value
                        listView.getItemAtPosition(position)
                        return false;
                    }

                })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接