【问题标题】:How can I implement an onClickListener on top of OnSwipeListener for GridView?如何在 OnSwipeListener 之上为 GridView 实现 onClickListener?
【发布时间】: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


    【解决方案1】:

    我曾经在使用滚动视图时遇到过类似的问题,并且我在其中接触过的东西,存在某种相互引用。也许您可以尝试将 gridView 放在容器视图中并将侦听器分开放置。一个在容器中,一个在gridView中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多