2011-12-27 167 views
0

我有一個列表視圖。我想實現的是,當我長按任何項目時,它將顯示一個對話框菜單。不過,我也有一個點擊監聽器。它會在長時間點擊後觸發。我如何取消該操作或者是否存在忽略長時間點擊的clcik操作的方法。setOnLongClickListener和setOnClickListener問題

由於

回答

4

Check this out

沒有爲setOnLongClickListener的具體方法。只要確保您setLongClickable對您的ListView爲真!您需要分隔您爲正常點擊和長點擊定義的偵聽器。

除此之外,請嘗試發佈一些代碼。它會讓社區更好地幫助你。

+0

歡呼聲我明白了 – akd 2011-12-28 00:33:47

+0

@akdurmus:幹得好! – hwrdprkns 2011-12-28 03:34:48

0

如果您想以正確的方式做到這一點,請閱讀Context Menu。否則,你可以使用彈出對話框做到這一點很容易,但混亂的方式,並通過重寫ListView的onItemLongClickListener

1

我的猜測是,你是直接設置點擊監聽器在每個對應於列表中的項目的意見,可能在您ListAdaptergetView方法用代碼與此類似:

itemView.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(final View v) 
    { 
     // DO SOMETHING 
    } 
}); 

如果你這樣做,對這些意見OnClickListeners覆蓋監聽器設置爲ListView水平(與registerForContextMenu(listView))和上下文菜單將永遠不會被調用長時間點擊。

正確的做法是在ListView級別設置你的菜單(長按),並點擊監聽兩種:

registerForContextMenu(listView); 
listView.setOnItemClickListener( 
    new OnItemClickListener() {   
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long l) { 
      // DO SOMETHING 
      // selected item is a.getAdapter().getItem(position); 
    } 
    }); 

PS:我回答,因爲我有同樣的問題,我覺得如果您需要上下文菜單,接受setOnLongClickListener的回答可能不是推薦的方法。