我有一个用于显示月份的 GridView,我希望能够单击每个项目(天)并打开一个新 Activity ,以及在上/下滑动时更改上/下月份的月份。 如何同时实现它们?
我看到了另一个与我类似的问题,但这对我的情况也没有帮助。
当使用 setOnTouchListener(OnSwipeListener) 时,我成功地检测到完美滑动时的 Action ,但随后我无法使用任何 onTouchListener 使 gridview 可点击。
onSwipe Action 代码
gridView.setOnTouchListener(new OnSwipeListener(this) {
public void onSwipeTop() {
Toast.makeText(CalendarActivity.this, "top", Toast.LENGTH_SHORT).show();
}
public void onSwipeRight() {
Toast.makeText(CalendarActivity.this, "right", Toast.LENGTH_SHORT).show();
}
public void onSwipeLeft() {
Toast.makeText(CalendarActivity.this, "left", Toast.LENGTH_SHORT).show();
}
public void onSwipeBottom() {
Toast.makeText(CalendarActivity.this, "bottom", Toast.LENGTH_SHORT).show();
}
public boolean onTouch(View v, MotionEvent event) {
v.performClick(); // If we create a custom gridview using public boolean performClick it is going to work. For now it doesnt.
return gestureDetector.onTouchEvent(event);
}
});
onClick Action 的代码
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(CalendarActivity.this, "Clicked: " + position, Toast.LENGTH_SHORT);
}
});
使用这两种方法的结果是,我得到了 onSwipe 方法(左/右/上/下)的正确结果,但是当单击 GridView 中的每个项目时,它单击了每周的第一天(星期一)和一段时间后它崩溃了。
如果有任何其他方法可以将 onSwipeListener 添加到基本 GridView,我也会尝试使用它。
OnSwipe 的 setOnTouchListener 出现错误,无论如何都不会覆盖 performClick,因此可能有更好的方法。
欢迎提出任何建议。
最佳答案
我曾经遇到过类似的问题, ScrollView 和我在其中触摸的东西,有一些干扰。也许您可以尝试将 gridView 放在容器 View 中,并将监听器分开放置。一个在容器中,一个在gridView中
关于java - 如何在 GridView 的 OnSwipeListener 之上实现 onClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58808730/