Piyell 2015-12-12 02:34
浏览 4340

RecycleView viewholder复用显示混乱的问题

最近在使用recycleview的时候被这个问题困扰好几天了,recycleview.adapter代码如下:
 private class MyRecycleViewAdapter extends RecyclerView.Adapter<MyRecycleViewAdapter.ViewHolder> {
        private  MyRecycleViewAdapter.ViewHolder viewHolder=null;

        @Override
        public MyRecycleViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(getActivity()).inflate( R.layout.device_tmperature,parent,false);
            viewHolder = new ViewHolder(view);
            return viewHolder;
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            Log.e(TAG, "onBindView position " + position+" suppose to be seen "+holder.getLayoutPosition()+" ℃" );
            viewHolder.degree.setText(holder.getLayoutPosition()+" ℃");
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public int getItemCount() {
            return 10;
        }



        @Override
        public void onViewAttachedToWindow(ViewHolder holder) {
            Log.e(TAG, "onViewAttachedToWindow position " + holder.getLayoutPosition()+" suppose to be seen "+holder.getLayoutPosition()+" ℃" );
            viewHolder.degree.setText(holder.getLayoutPosition()+" ℃");

        }

        public class ViewHolder extends RecyclerView.ViewHolder{
            TextView degree = null;
            CardView cv_device=null;

            public ViewHolder(View itemView) {
                super(itemView);
                degree= (TextView) itemView.findViewById(R.id.tv_degree);
                cv_device = (CardView) itemView.findViewById(R.id.cv_device);
                cv_device.setCardElevation(5);
                cv_device.setRadius(5);
            }


        }
    }

图片说明
一开始显示的时候没有问题,但是当我往下滑动到position=4的时候显示的内容就开始混乱了。通过LOG打印出的信息发现是因为当我滑到position=5本应该显示的时候onBindViewHolder和onViewAttachedToWindow提供的viewholder还是position=4的,所以本应该position=5显示“6℃”的时候却变成position=4显示了。已经在在这个问题纠结好几天了有人能帮忙解决吗?谢谢了
图片说明
图片说明

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)