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

时间:2011-05-26 16:26:10

标签: android android-layout android-widget

让我假设我有一个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;
                        }
                    });

            }

我也在网上看到了一些带有contextmenu的代码但是我没有办法从上下文菜单打开的位置获取listItem的位置。

4 个答案:

答案 0 :(得分:61)

我不知道你是否已经解决了你的问题,我几乎可以肯定你已经解决了这个问题,但这很有效。

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

答案 1 :(得分:6)

this.getListView().setOnItemLongClickListener应该有效。

答案 2 :(得分:4)

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

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

答案 3 :(得分: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;
                    }

                })