【问题标题】:one item clickable in RecyclerView in android在 android 的 RecyclerView 中可点击的一项
【发布时间】: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);
    }
}

}

【问题讨论】:

标签: android android-studio android-recyclerview onitemselectedlistener


【解决方案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 项目中所有点击所需的唯一侦听器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多