- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 recyclerview 方法上实现此方法 Changing background color of selected item in 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));
}
}
我已经发现问题是当我调用 notifydatasethaschanged() 时它也调用了适配器来添加数据。我被困住了,不知道该怎么办。也许任何人都可以为我找到解决方案。
最佳答案
What does
notifyDataSetChanged()
do onrecyclerview
?
来自文档
通知所有已注册的观察者数据集已更改。
数据更改事件分为两类:项目更改和结构更改。项目更改是指单个项目的数据已更新但未发生位置更改。结构更改是指在数据集中插入、删除或移动项目。
意味着无论何时调用 notifyDataSetChanged()
,它都会调用 onBindViewHolder()
why it keeps adding new data everytime i call notifyDataSetChanged()?
因为您使用以下行在您的 adapterChart
中添加新数据adapterChart.addData(mItemsChart);
在你的 onBindViewHolder
这意味着无论何时您的 onBindViewHolder
被调用,您都在向您的 adapterChart
关于android - notifyDataSetChanged() 在 recyclerview 上做了什么?为什么每次我调用 notifyDataSetChanged() 时它都会不断添加新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52436403/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!