0
我试图在clicked时突出显示我在recyclerView中选择的项目,但它会触发两个项目。请帮帮我。我是否应该将点击的项目存储为数组列表,并在新点击时清除它们?RecyclerView适配器notifyItemChanged触发两次
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();
}
}
为什么你需要调用notifyItemChanged如果你只是改变颜色,并且你正在执行setOnClickListener方法呢? – zon7
@ zon7无论如何,它会改变2项颜色:( –
两个项目,当你滚动不是吗?这是因为它重新使用视图,你必须重置视图参数,如颜色,当你改变它们dinamically.I将添加一个响应 – zon7