2011-07-07 24 views
7

我想在listView-onClick和LongClick上都有類型的點擊。ListView不啓動setOnLongClickListener,只有setOnItemClickListener

我實現這樣的:

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) { ... } }); 

但它簡化版,火長按。 任何人有任何想法爲什麼?

回答

24

您必須啓用LongClickable

list.setLongClickable(true); 

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

} 
}); 
+0

謝謝你!解決我的問題:) 順便說一句 - 你不必做setLongClickable槽代碼,它更好,當你確定它通過XML: android:longClickable =「true」 – Ofershap

+1

「setOnItemLongClickListener」的文檔說「如果這個觀點不容易點擊,它變得可以長時間點擊。「 – Vadim

+8

這對我不起作用...... :( – Vadim

0

onLongClick如果回調消耗長按,則返回true,否則返回false。所以如果這個事件被這個方法處理,返回true。

+0

我在這個方法裏面添加了一個斷點,它並沒有停在那裏..它看起來不會觸發事件。 – Ofershap

6

@Vadim,是你的ListView的適配器是BaseAdapter延伸?如果是,那麼還需要設置convertView.setLongClickable(true);在getView()中。

1

對於我來說,我必須在包含我的ListView 佈局(不是ListView佈局)的XML文件中設置android:longClickable="true"以使項目可以長按。

+0

在我看到的這個問題的許多建議的解決方案(我試過他們都是),這是唯一一個爲我工作的人。 –

相關問題