【发布时间】:2019-11-11 21:08:15
【问题描述】:
我有一个 GridView 用于显示月份,我希望能够单击每个项目(天)并打开一个新活动,以及在上/下滑动时更改月份。 我怎样才能同时实现它们?
我看到了另一个与我类似的问题,但这对我的情况也无济于事。
当使用 setOnTouchListener(OnSwipeListener) 时,我设法检测到完美滑动时的动作,但是我无法使用任何 onTouchListener 使 gridview 可点击。
onSwipe 动作的代码
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 动作的代码
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,因此可能有更好的方法。
欢迎提出任何建议。
【问题讨论】:
标签: java android gridview onclicklistener