我的活動實現了OnTouchListener,它內部有一個ListView。 當用戶觸摸ListView時,我需要將ClickEvent分派給具有OnItemClickListener處理程序的ListView。當活動實現OnTOuchListener時調度點擊ListView
我該怎麼做?
編輯:ListView控件的
每個列表項具有的onTouchEvent處理程序。 ListView有onItemClick處理程序。
@Override
public boolean onTouch(View view, MotionEvent event) {
float actionUpX;
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
actionDownX = event.getX();
break;
case MotionEvent.ACTION_UP:
actionUpX = event.getX();
mFlipper = (ViewFlipper) view.findViewById(R.id.view_listitem_flipper);
if(actionDownX < actionUpX){
// |--->
mFlipper.showNext();
} else if(actionDownX > actionUpX){
// <---|
mFlipper.showPrevious();
} else {
//Click
//Need to dispatch itemClickEvent to ListView
//view.performClick(); this line causes StackOverflowException
}
break;
}
return true;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//Need do an action using position of view
}
我的列表項是ViewFlipper,當用戶觸摸和拖拽項目,ViewFlipper需要執行 showNext或ShowPrevious和單一的點擊已經通過onItemClick
確定。但是我的listVew的每個項目都有onTouchEventListener。所以,當用戶點擊(而不是拖動)時,應該調用onListItemClick。 Ty – Rodrigo
我不認爲你想使用onTouchEventListener,因爲這通常更多的是地圖視圖,當你有一個列表,並且用戶'觸摸'列表項時,它在技術上是'點擊',這就是爲什麼你想要使用onClick相關的東西。我知道這有點令人困惑,但我認爲你不應該爲你的listView使用onTouchEventListener,然後當用戶點擊它時應該調用onListItemClick,你應該可以做任何你想要的動作。另外,請確保您的列表行中沒有任何可聚焦或可點擊的項目,否則onListItemClick似乎不起作用。 – Wolfcow
所以,我需要爲listItem實現2行爲:1 - 單擊(切換到另一個活動)。 2 - 拖動(listFrame的viewFlipper顯示項目的第二個佈局,顯示4個按鈕,每個按鈕都有不同的活動) – Rodrigo