[英]Count the clicks on an item of RecyclerView
我正在開發一個使用RecyclerView
的android應用程序。 假設我在RecyclerView
有6個項目,即[A, B, C, D, E, F]
。 那么,如何獲得這些項目的點擊次數呢?
例如:
如果用戶打開項目B
4次。 如何獲得count = 4
?
僅當用戶單擊同一項目時,PS count
應增加。
首先為每個項目聲明靜態計數變量
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++;
}
}
在持有人
itemView.setOnClickListener(){
onClick(){
// count up
}
}
每個項目還需要一個id
才能知道,它是哪個項目
您可以在適配器中創建Map<Integer, Integer> clicksMap = new HashMap<>()
您還應該將充當點擊偵聽器的接口傳遞給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); }
}
最后,clicksMap將包含回收站中項目每個位置的點擊計數。
我舉了一個例子
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;
}
}
CustomAdapter和CustomViewHolder用於recyclerview
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);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.