问题
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