簡體   English   中英

RecyclerView Adapter notifyItemChanged觸發兩次

[英]RecyclerView Adapter notifyItemChanged triggers twice

我試圖在單擊時在recyclerView中突出顯示我選擇的項目,但它會觸發兩個項目。 請幫我。 我應該將單擊的項目存儲為arraylist並在單擊新的項目時將其清除嗎?

public class StationsAdapter extends RecyclerView.Adapter<StationsHolder> {

List<Station> stations;

public StationsAdapter(List<Station> stations){
    this.stations = stations;
}

public void changeItemAtPosition(int position) {
    notifyItemChanged(position);
}

@Override
public StationsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return new StationsHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.stations_item,parent,false));
}

@Override
public void onBindViewHolder(StationsHolder holder, int position) {
    bind(holder);
}

private void bind(final StationsHolder holder) {

    holder.tvTitle.setText(stations.get(holder.getAdapterPosition()).getName());
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            holder.tvTitle.setTextColor(ContextCompat.getColor(AppDelegate.getContext(),R.color.colorAccent));
        }
    });
}

@Override
public int getItemCount() {
    return stations.size();
}

}

這是由於在滾動時回收者會重復使用同一視圖。 為了解決這個問題,您將必須執行以下操作:

  1. 單擊所選項目時將其存儲。 如果要多個,則在變量或數組中
  2. 在bind方法中檢查選定的項目變量/數組,以了解是否需要着色

這樣,它將完美地工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM