one item clickable in RecyclerView in android

醉酒当歌 提交于 2019-12-06 16:24:22

问题


i'm working on some kind of educational game, in this game i represent nine levels in recyclerview each level is enabled when the previous one, now i'm trying to make one item in the recycler View enable and the others unable, i been searching in youtube , and other websites, my question is how to do it?(note: i'm new in android studio so keep it simple as possible).

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);
    }
}

}


回答1:


You can achieve this by

Add a interface like this in your adapter class

 public interface ItemClickListner{
    void onItemClick(ItemView item);
}

Initialize this Interface

    private ItemClickListner clickManager;

Add a Param Adapter class constructor

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

In Your ViewHolder Add a OnClickListner for itemView

itemView.setOnClickListener(this);

in Your onClick override function

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



回答2:


This example shows how to implement the onClick listener for an item in your adapter, and getting the position of the clicked item. My goal in this case is making only the fifth view in the Recyler-View clickable.

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...
        }
      }
    }


来源:https://stackoverflow.com/questions/49335280/one-item-clickable-in-recyclerview-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!