我在使用 viewFlipper
中的 litView
时遇到一些问题。
// GestureDetector
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// Right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
IconManager.INSTANCE.leftSwipe();
vf.setInAnimation(slideLeftIn);
vf.setOutAnimation(slideLeftOut);
vf.showNext();
System.out.println("SWIIINGG!!");
// Left to right swipe
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
IconManager.INSTANCE.rightSwipe();
vf.setInAnimation(slideRightIn);
vf.setOutAnimation(slideRightOut);
vf.showPrevious();
}
} catch (Exception e) {
// nothing
}
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.e("Item Click","Item Click");
Intent intentAgenda = new Intent (Activity_Main.this, AgendaSelected.class);
//intentAgenda.putExtra("LECTURE_NAME", homeAgendaListAdapter.getItemId(3));
startActivity(intentAgenda);
return super.onSingleTapConfirmed(e);
}
}
此代码使我能够在鳍状肢中的 View 之间翻转,并在不同翻转中的列表中滚动。但是,这使我的整个应用 可点击。即使我在空白表面上 singleTap
,它也会记录一次点击,并将我发送到 Intent intentAgenda = new Intent
想要发送给我的位置。只有当我点击 listView
中的项目时才会发生这种情况!
我该怎么做才能让特定列表上的监听器只收听“列表上的”而不是整个应用程序?我认为问题出在 public boolean onSingleTapConfirmed
中,但我看不到它。
最佳答案
我没有尝试过上述方法,但一个实际有效的解决方案是创建一个新的 OnItemClickListener,然后在您的列表上设置 OnItemClickListener(您的项目点击监听器)。 那就是在你的情况下不使用单击,而是像这样创建一个新的 itemclick 监听器,但更时尚:
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent intentAgenda = new Intent (Activity_Main.this, AgendaSelected.class);
// // intentAgenda.putExtra("LECTURE_NAME", homeAgendaListAdapter.getItemId(3));
startActivity(intentAgenda);
}
});
如果您想创建更多列表,您可以创建一个新的项目点击监听器,并将每个列表指向它。
关于android - ViewFlipper 中的 listView - 滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040547/