在 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: ScrollView 内的 RecyclerView
Android:在 Recyclerview 中更改图像旋转