我有一個列表視圖。我想實現的是,當我長按任何項目時,它將顯示一個對話框菜單。不過,我也有一個點擊監聽器。它會在長時間點擊後觸發。我如何取消該操作或者是否存在忽略長時間點擊的clcik操作的方法。setOnLongClickListener和setOnClickListener問題
由於
我有一個列表視圖。我想實現的是,當我長按任何項目時,它將顯示一個對話框菜單。不過,我也有一個點擊監聽器。它會在長時間點擊後觸發。我如何取消該操作或者是否存在忽略長時間點擊的clcik操作的方法。setOnLongClickListener和setOnClickListener問題
由於
沒有爲setOnLongClickListener
的具體方法。只要確保您setLongClickable
對您的ListView
爲真!您需要分隔您爲正常點擊和長點擊定義的偵聽器。
除此之外,請嘗試發佈一些代碼。它會讓社區更好地幫助你。
如果您想以正確的方式做到這一點,請閱讀Context Menu。否則,你可以使用彈出對話框做到這一點很容易,但混亂的方式,並通過重寫ListView的onItemLongClickListener
我的猜測是,你是直接設置點擊監聽器在每個對應於列表中的項目的意見,可能在您ListAdapter
的getView
方法用代碼與此類似:
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
的回答可能不是推薦的方法。
歡呼聲我明白了 – akd 2011-12-28 00:33:47
@akdurmus:幹得好! – hwrdprkns 2011-12-28 03:34:48