【问题标题】:Recycler view Click ListenerRecycler 视图 Click Listener
【发布时间】:2017-07-21 13:15:22
【问题描述】:

我正在使用 Android 的应用程序来完成它,但我在 recyclerView 中发现了问题,我不知道如何在 recyclerView 的 Item 的 textview 上实现点击侦听器? (当我点击项目时)

我有一个多选 recyclerview...只有当我选择 recyclerview 项目时,textview 才可见

【问题讨论】:

标签: android android-recyclerview ontouchlistener


【解决方案1】:

这里用这个:

我的 recyclerView 行有 2 个 textViews :

 public class MyViewHolder extends RecyclerView.ViewHolder{
        public TextView name,price;

        public MyViewHolder(View view){
            super(view);
            name = (TextView) view.findViewById(R.id.name);
            price= (TextView) view.findViewById(R.id.price);

            name.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.e("Test","Name clicked : "+getAdapterPosition());
                }
            });


        }
    }

从这个位置,您可以使用您的 dataList 获取特定项目的值。

希望对你有帮助!!!

【讨论】:

  • 我的回收器视图是一个多选回收器视图...即)当我长按当前视图项目时被选中...只有现在文本视图可见...我尝试了您的代码由于 GestureDetector 取消选择该项目..做什么
  • 点击recyclerview行有什么功能吗??
  • 是的..我有一个功能..它会打开另一个活动
  • 我刚刚测试了它检测特定 textView 和完整 recyclerView 行点击的功能。你能分享你实现功能的代码吗??
  • 好的,如果我正确理解了您的问题,请告诉我。您想要的是在 recylerView 行上的单点点击,您将进入一个新活动,但是如果您长按该行,一个文本视图将可见,并且点击该文本视图您想要一些其他功能,而不是活动的正常切换.
【解决方案2】:

在回收器适配器中的 textView 上实现 View.OnClickListener。

【讨论】:

  • 将 TextView 也设置为可点击
  • 没有用,这就是为什么首先提出问题
  • 尝试在适配器中的 textView 上使用 onClickListener 而不是在 Activity 中使用 OnItemTouch
  • 我的回收器视图是一个多选回收器视图...即)当我长按当前视图项目时被选中...只有现在文本视图可见...我尝试了您的代码由于 GestureDetector 取消选择该项目..做什么
【解决方案3】:

您可以使用适配器,并且可以从适配器为特定组件(即 TextView)提供点击监听器。

【讨论】:

  • 我的回收器视图是一个多选回收器视图...即)当我长按当前视图项目时被选中...只有现在文本视图可见...我尝试了您的代码由于 GestureDetector 取消选择该项目..做什么
【解决方案4】:

这可能对你有帮助....

 public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{


        TextView textview;


        public MyViewHolder(View itemView) {
            super(itemView);
                itemView.setOnClickListener(this);

                textview = (TextView) itemView.findViewById(R.id.textview);


        }

        @Override
        public void onClick(View view) {
           textview = (TextView) itemView.findViewById(R.id.textview);
             //do your actions here

        }
    }

【讨论】:

    【解决方案5】:

    好的,我想我已经解决了你的问题:

    首先,在您的 RecyclerView 的项目布局中,使父布局可点击并且您的 TextView 的可见性消失:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/item_layout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:layout_gravity="center"
        android:gravity="center"
        >
    <TextView
      android:id="@+id/text_title"
      android:layout_width="match_parent"
      android:layout_height="50dp"/>
    </LinearLayout>
    

    使您的父布局可点击是必要的,并在您的 ViewHolder 类中声明此 LinearLayout,如下所示:

    class ViewHolder extends RecyclerView.ViewHolder {
     private LinearLayout itemLayout;
     private TextView textItem;
     ViewHolder(final View itemView) {
     super(itemView);
     itemLayout=(LinearLayout) itemView.findViewById(R.id.movie_item);
     textItem=(TextView)itemView.findViewById(R.id.text_title);
    }
    

    然后代替 itemView.setOnClickListener,使用 itemLayout.setOnClickListener() 如下:

    itemlayout.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
          //make your textView or your items Visible 
          //make your textview clickable
          //set Your itemLayoutClickable as false
    
        }
                });
    

    最后,为你的 TextView 制作 onClickListener:

    textItem.setOnClickListener=new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
    
    //perform your text click action
    }
    });
    

    为了使 TextView 再次不可见,您可能需要添加一些额外的逻辑,例如设置标志、检查标志以及使项目可见或不可见并通知适配器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多