java - 如何在 GridView 的 OnSwipeListener 之上实现 onClickListener?

标签 java android gridview onclicklistener

我有一个用于显示月份的 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/

相关文章:

android - 尝试调用虚拟方法 'int java.lang.String.hashCode()'

android - 在gridview中设置某些项目不可点击

java - 如果有效,为什么其他方法不起作用?

Java GridBagLayout 正在调整其自身之外的对象的大小

java - 数组中的对象,可以做到吗?

java - 如何处理Android国际象棋应用程序中的拖动?

c# - 如何在gridview中连续显示图片

java - sonar-project.properties 中的 Glob

java - TreeSet 比较器或 comparble.compareTo() 优先级

android - android中的服务和应用程序之间共享资源