我正在开发一个Android应用程序,其中我使用RecyclerView
。假设我的RecyclerView
中有6个项目,即[A, B, C, D, E, F]
。那么如何获得这些项目的点击次数呢?
例如:
如果用户打开项目B
4次。我怎样才能获得count = 4
?
P.S。只有当用户点击相同的项时,count
才会增加。
答案 0 :(得分:1)
首先为每个项目声明静态计数变量
private static int aCount = 0;
然后在你的onBindViewHolder中,在按钮点击你的位置id之后传递一个方法。
public void onBindViewHolder(ItemAdapter.ViewHolder holder, int position) {
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
thisWasClicked(position);
}
}
}
方法将是这样的
private void thisWasClicked(int position) {
if (position == 0) {
aCount++;
}
}
答案 1 :(得分:0)
持有人
itemView.setOnClickListener(){
onClick(){
// count up
}
}
每个项目还需要id
才能知道它是哪个项目
答案 2 :(得分:0)
您可以在适配器中创建Map<Integer, Integer> clicksMap = new HashMap<>()
您还应该将接口传递给充当Click Listener的ViewHolder。像。的东西。
public interface OnItemLick {
void onItemClick(int position, int id);
}
然后在适配器中声明此接口的实例。
OnItemLick listener = new OnItemClick() {
void onItemClick(int position, int id) {
//you can either use the item position or an id (if you have an unique one for the items). I will show an example using the position.
int count;
if(clicksMap.contains(position)) {
count = clickMap.get(position);
count ++;
clickMap.put(position, count);
}else {
count ++;
clickMap.put(position, count); }
}
最后,您点击地图将包含回收商中每个商品位置的点击次数。
答案 3 :(得分:0)
我做了一个例子
CustomItem 对象
public class CustomItem {
private String item;
private int click;
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public int getClick() {
return click;
}
public void setClick(int click) {
this.click = click;
}
}
recyclerview的CustomAdapter 和 CustomViewHolder
public class CustomAdapter extends RecyclerView.Adapter{
private List<CustomItem> itemList;
public CustomAdapter(List<CustomItem> itemList){
this.itemList = itemList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new CustomViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.viewholder_generic, parent, false));;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//increase click count for the current item
itemList.get(holder.getAdapterPosition()).setClick(itemList.get(holder.getAdapterPosition()).getClick() + 1);
}
});
}
@Override
public int getItemCount() {
return itemList.size();
}
// Custom ViewHolder
public class CustomViewHolder extends RecyclerView.ViewHolder {
//add fields you need
public CustomViewHolder(View itemView) {
super(itemView);
}
}
}