回收站视图上的 Onclick 侦听器必须打开不同的活动
Posted
技术标签:
【中文标题】回收站视图上的 Onclick 侦听器必须打开不同的活动【英文标题】:Onclick Listener On Recycler View Has to Open Different activities 【发布时间】:2021-06-21 00:48:27 【问题描述】:这是我的适配器类,其中包含我的 onClick 侦听器,我希望它根据在回收器视图中单击的项目打开各种活动。我似乎无法实现一种可以完成这项工作的方法。
//DATA BOUND TO VIEWS
@Override
public void onBindViewHolder(MyHolder holder, int position)
//BIND DATA
holder.ProductCategory.setText(products.get(position).getProductCategory());
holder.ProductImage.setImageResource(products.get(position).getProductImage());
//IMPLEMENT CLICK LISTENER
holder.setItemClickListener(new ItemClickListener()
@Override
public void onItemClick(View v, int pos)
//i get errors when i try to implement in this method
);
【问题讨论】:
【参考方案1】:您可以将点击侦听器设置为您的持有者类的itemView
:
holder.itemView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// Place your logic to open diffrent activity based on holder.getAdapterPosition()
);
并将您的活动打开逻辑放在 onClick() 方法中。使用holder.getAdapterPosition()
作为当前视图的位置
【讨论】:
【参考方案2】:实际上,我通过添加“if else”语句来解决该问题,该语句指定当根据列表中的位置单击回收器视图中的项目时应采取的操作。
//DATA BOUND TO VIEWS
@Override
public void onBindViewHolder(MyHolder holder, int position)
//BIND DATA
holder.ProductCategory.setText(products.get(position).getProductCategory());
holder.ProductImage.setImageResource(products.get(position).getProductImage());
//IMPLEMENT CLICK LISTENER
holder.setItemClickListener(new ItemClickListener()
@Override
public void onItemClick(View v, int pos)
// this is the solution
if(position == 0)
//first item clicked
Intent intent = new Intent(c, CartWeb.class);// what happens when an
// item is clicked
c.startActivity(intent);
else if(position == 1)
//second item clicked
Intent intent = new Intent(c,Options.class);
c.startActivity(intent);
);
【讨论】:
【参考方案3】:在 onCreateVHolder 中实现点击监听
itemView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION)
// here implement which you want onItem click
);
【讨论】:
以上是关于回收站视图上的 Onclick 侦听器必须打开不同的活动的主要内容,如果未能解决你的问题,请参考以下文章
使用多个 onclick 侦听器将多个 url 传递给 recyclerview 中的 itemview
如何通过 android 中的回收器视图运行 for 循环?