RecyclerView如何修改指定位置的Item?
RecyclerView mRecyclerView = this.findViewById(R.id.recycler_view);
RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
View item = layoutManager.findViewByPosition(position);
item.setBackgroundColor(Color.parseColor("#FFF000"));
上面这种方法获取到Item后虽然是可以修改样式,但是当列表滚动的时候它会重新绘制,导致之前修改的Item样式会发生改变。
如何解决修改指定位置Item?
找了很多网上的例子,都没有解决~~
能说一下你展示的数据吗?建议单个item要展示的内容加上个标志位,或者专门加一个字段来表示颜色,显示的时候在onBindViewHolder()中读取item的数据,根据标志位或者字段来显示颜色,这样就不会因为recyclerview的复用机制导致显示错误了
因为复用的问题,所以你除了处理if,还要处理else
动态修改item,你应该到适配器里去做,并且在其onBindViewHolder去实现。另外要注意item复用机制,你会出现布局错乱,实质上是这个item复用机制的结果,你需要把条件写全。比如说某些item的图片文字可见性控制,那么你需要写双向逻辑,可见和不可见的case都要覆盖,其他的也是如此