Iga*_*nov 2 android android-recyclerview
我正在尝试在我的 recyclerview 方法上实现此方法更改recyclerview中所选项目的背景颜色
我正确地遵循了脚本,它以我想要的方式工作。是的,它会改变颜色,但每次我单击该项目时,它似乎都在不断添加新数据。我正在使用 2 recyclerview。
我在第一个 recyclerview 上的方法调用了另一个方法来再次绘制一个 recyclerview。就像当我们调用第一个 recyclerview 时,它也调用了第二个 recyclerview。
这是我的脚本:
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.viewItem.setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,true);
holder.viewItem.setLayoutManager(layoutManager);
HoriSpacingDecoration horiSpacingDecoration = new HoriSpacingDecoration(Utils.convertDpToPixel(10,context));
holder.viewItem.addItemDecoration(horiSpacingDecoration);
adapterChart = new ChartItemAdapter(context);
holder.viewItem.setAdapter(adapterChart);
mItemsChart.clear();
holder.textView.setText(mBulan.get(position));
int dataTertinggi = Integer.parseInt(Collections.max(mItems));
int botol = dataTertinggi/5;
int ci = niceround(dataTertinggi);
Log.d(TAG, "onBindViewHolder: pembulatan " + ci);
ukuran = Integer.parseInt(mItems.get(position))/botol;
if(Integer.parseInt(mItems.get(position))%10 < botol)
{
ukuran2=1;
ukuran+=ukuran2;
}
else
{
ukuran2=1;
ukuran+=ukuran2;
}
for(int y=0;y<ukuran;y++)
{
mItemsChart.add(String.valueOf(y));
}
adapterChart.addData(mItemsChart);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context,mItems.get(position) + " Bottle" ,Toast.LENGTH_SHORT).show();
prevPos = position;
mItemsChart.clear();
notifyDataSetChanged();
}
});
if(prevPos == position)
{
holder.textView.setTextColor(context.getResources().getColor(R.color.colorPrimary));
}
else
{
holder.textView.setTextColor(context.getResources().getColor(R.color.colorAccent));
}
}
Run Code Online (Sandbox Code Playgroud)
我已经发现问题是当我调用 notifydatasethaschanged() 时,它也调用了适配器来添加数据。我被卡住了,不知道该怎么办。也许任何人都可以为我找到解决方案。
这是什么
notifyDataSetChanged()做的recyclerview?
来自文档
通知任何已注册的观察者数据集已更改。
有两种不同类别的数据更改事件,项目更改和结构更改。项目更改是指单个项目的数据已更新但未发生位置更改。结构变化是指在数据集中插入、删除或移动项目。
意味着每当你打电话给notifyDataSetChanged()它onBindViewHolder()
为什么每次我调用 notifyDataSetChanged() 时它都会不断添加新数据?
因为您正在使用在 Your adapterChartusing 下面的行中
添加新数据adapterChart.addData(mItemsChart);onBindViewHolder
这意味着每当您onBindViewHolder被调用时,您都会在您的adapterChart
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |