MyアクティビティはOnTouchListenerを実装し、その中に1つのListViewを持ちます。 ユーザーがListViewをタッチすると、ClickEventをOnItemClickListenerハンドラを持つListViewにディスパッチする必要があります。ディスパッチListView toアクティビティが実装されているときの表示OnTOuchListener
どうすればいいですか?
編集:リストビューの
各リスト項目は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
[OK]をクリックします。しかし、私のlistVewの各項目にはonTouchEventListenerがあります。したがって、ユーザーがクリック(ドラッグしない)すると、onListItemClickを呼び出す必要があります。 Ty – Rodrigo
私はonTouchEventListenerを使用したくないと思うのですが、これはマップビューのためのもので、リストを持っていてユーザーがリスト項目に触れると技術的に「クリック」するので使いたいですonClick関連のもの。私はそれが少し混乱していることがわかっていますが、私はあなたがあなたのリストビューのonTouchEventListenerを持ってはいけないと思うときは、ユーザーがクリックonListItemClickを呼び出す必要があり、あなたはあなたが望むアクションを行うことができるはずです。また、リスト行にフォーカスまたはクリック可能な項目がないことを確認してください。そうしないと、onListItemClickが機能しないように見えます。 – Wolfcow
したがって、私はlistItemのための2つの振る舞いを実装する必要があります:1 - クリック(別のアクティビティに切り替える)。 2 - drag(viewFlipperはアイテムの2番目のレイアウトを表示し、それぞれが異なる活動をする4つのボタンを表示します。 – Rodrigo