在 android 的 RecyclerView 中可点击的一项

Posted

技术标签:

【中文标题】在 android 的 RecyclerView 中可点击的一项【英文标题】:one item clickable in RecyclerView in android 【发布时间】:2018-08-26 09:05:36 【问题描述】:

我正在开发某种教育游戏,在这个游戏中,我在 recyclerview 中代表九个级别,每个级别在前一个级别启用时,现在我正在尝试使 recycler View 中的一个项目启用而其他项目无法,我一直在 youtube 和其他网站上搜索,我的问题是如何做到这一点?(注意:我是 android studio 的新手,所以尽量保持简单)。

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> 

private List<ItemView> items;
private Context context;

public ListAdapter(List<ItemView> items , Context context)
    this.items = items;
    this.context = context;


@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
   View view = LayoutInflater.from(parent.getContext())
           .inflate(R.layout.item_list , parent , false);






return new ViewHolder(view);


@Override
public void onBindViewHolder(ViewHolder holder, int position) 
     ItemView i = items.get(position);



                 holder.setHeadText(i.getHead());
     holder.setScoreText(i.getScore());




@Override
public int getItemCount() 
    return items.size();


class ViewHolder extends RecyclerView.ViewHolder 
    private TextView headText , scoreText;

    public ViewHolder(View itemView) 
        super(itemView);

        headText = (TextView)itemView.findViewById(R.id.head);
        scoreText = (TextView)itemView.findViewById(R.id.score);
    

    public void setHeadText(String headText) 
        this.headText.setText(headText);
    

    public void setScoreText(String scoreText) 
        this.scoreText.setText(scoreText);
    

【问题讨论】:

请分享您的活动代码和您的回收站视图的适配器代码。如果您没有适配器并且不知道我在说什么,我建议您阅读这篇文章:androidhive.info/2016/01/android-working-with-recycler-view。我还建议您观看此视频:youtube.com/watch?v=puyiZKvxBa0,它展示了如何在回收站视图中处理项目点击。 这是我的适配器代码 为什么需要活动码? 【参考方案1】:

你可以通过

在你的适配器类中添加这样的接口

 public interface ItemClickListner
    void onItemClick(ItemView item);

初始化这个接口

    private ItemClickListner clickManager;

添加 Param Adapter 类构造函数

public ListAdapter(List<ItemView> items , Context context,ItemClickListner clickManager)
this.items = items;
this.context = context;
this.clickManager=clickManager;

在您的 ViewHolder 中为 itemView 添加 OnClickListner

itemView.setOnClickListener(this);

在您的onClick 覆盖函数中

if(clickManager!=null)
    clickManager.onItemClick(items.get(getAdapterPosition()));

【讨论】:

【参考方案2】:

这个例子展示了如何为你的adapter中的一个项目实现onClick listener,并获取被点击项目的位置。在这种情况下,我的目标是只使Recyler-View 中的第五个 视图可点击。

class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener 
        private TextView headText , scoreText;

        public ViewHolder(View itemView) 
            super(itemView);

            headText = (TextView)itemView.findViewById(R.id.head);
            scoreText = (TextView)itemView.findViewById(R.id.score);
        

   @Override
    public void onClick(View view) 

        if(getLayoutPosition()==5)
        //your code goes here...
        
      
    

【讨论】:

在我放这个之后我就不需要做新的听众了吧? @user8545027 “新听众”是什么意思?这是您侦听 recycler-view 项目中所有点击所需的唯一侦听器。

以上是关于在 android 的 RecyclerView 中可点击的一项的主要内容,如果未能解决你的问题,请参考以下文章

android之recyclerview的基本使用

android: ScrollView 内的 RecyclerView

RecyclerView:错误的滚动效果(Android)

Android:在 Recyclerview 中更改图像旋转

Android Studio(Kotlin)之RecyclerView

Android RecyclerView的基本使用