ListView에서 setOnTouchListener와 setOnItemClickListener을 함께 사용하면 setOnItemClickListener이벤트가 먹지를 않습니다
private ViewFlipper m_viewFlipper;
ListView list;
private ViewFlipper m_viewFlipper;
EventTouch eTouch;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
m_viewFlipper = (ViewFlipper)findViewById(R.id.wordViewFlipper);
eTouch = new EventTouch(m_viewFlipper);
list = (ListView)findViewById(R.id.list);
list.setOnTouchListener(eTouch.MyTouchListener);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast.makeText(mContext, "클릭", 1).show();
}
});
}
public class EventTouch {
private ViewFlipper m_viewFlipper;
private int m_nPreTouchPosX = 0;
private int m_nPreTouchPosY = 0;
public EventTouch(ViewFlipper _m_viewFlipper) {
this.m_viewFlipper = _m_viewFlipper;
}
public View.OnTouchListener MyTouchListener = new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
m_nPreTouchPosX = (int)event.getX();
m_nPreTouchPosY = (int)event.getY();
//return true;
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
int nTouchPosX = (int)event.getX();
int nTouchPosY = (int)event.getY();
if (nTouchPosX < m_nPreTouchPosX+300)
{
Toast.makeText(mContext, "오른쪽", 1).show();
}
else if (nTouchPosX > m_nPreTouchPosX-300)
{
Toast.makeText(mContext, "왼쪽", 1).show();
}
m_nPreTouchPosX = nTouchPosX;
}
return false;
}
};
}
=======================================
xml
======================================
<ViewFlipper
android:id="@+id/wordViewFlipper"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/wordLayout"
>
<ListView android:id="@+id/list"
android:layout_marginTop="5dip"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
</ViewFlipper>