android RecyclerView刷新数据源后item出现空白项

我在联系人界面使用searchview实现搜索,在关闭搜索的时候要重新恢复联系人数据。
我把RecyclerView中的mData数据源给clear了,mData是List类型的。
但是在clear之后我重新调用了加载数据源的方法之后,恢复的数据源在每一组数据顶部都会出现一行空白项,具体是:打开搜索,搜索完毕之后,重新加载数据源,每一组联系人都出现一行空白的item,这个操作操作几次,就出现几行空白的item。
看图
图片说明

下面是我的代码:

     @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //此处必须设置,告诉Fragment我们需要菜单,否则onCreateOptionsMenu()方法不会被回调
        setHasOptionsMenu(true);
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_customers, container, false);
        mRv = (RecyclerView) view.findViewById(R.id.rv);
        mRv.setLayoutManager(mManager = new LinearLayoutManager(getActivity()));
        initDatas();
        //initDatas(getResources().getStringArray(R.array.provinces));
        initData(view);
        return view;
    }

加载数据源的代码

  private void initData(View view) {
        adapter=new UserAdapter(getActivity(), mDatas);
        mRv.setAdapter(mAdapter =adapter);
        mDecoration=null;
        mRv.addItemDecoration(mDecoration = new TitleItemDecoration(getActivity(), mDatas));
        //如果add两个,那么按照先后顺序,依次渲染。
        //mRv.addItemDecoration(new TitleItemDecoration2(this,mDatas));
        mRv.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));

        //使用indexBar
        mTvSideBarHint = (TextView) view.findViewById(R.id.tvSideBarHint);//HintTextView
        mIndexBar = (IndexBar) view.findViewById(R.id.indexBar);//IndexBar
        mIndexBar.setmPressedShowTextView(mTvSideBarHint)//设置HintTextView
                .setNeedRealIndex(true)//设置需要真实的索引
                .setmLayoutManager(mManager)//设置RecyclerView的LayoutManager
                .setmSourceDatas(mDatas);//设置数据源

        adapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(View v, int position) {
                UserInfo userInfo= mDatas.get(position);
                Intent intent=new Intent(getActivity(),CustomersDetailsActivity.class);
                intent.putExtra("name",userInfo.getName());
                startActivity(intent);

                //Toast.makeText(getActivity(), "pos:"+position, Toast.LENGTH_SHORT).show();
            }
        });
    }

关闭搜索的代码

      searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                Toast.makeText(getActivity(), "关闭搜索", Toast.LENGTH_SHORT).show();
                mDatas.clear();
                initDatas();
                initData(view);
                //adapter.notifyItemRangeChanged(0,mDatas.size());
                adapter.notifyDataSetChanged();
                return false;
            }
        });

我在国内国外都找了,好像没有发现有谁出现这样的问题,不知道哪里出问题了,还请各位高手指点下。

0

2个回答

这个可能是你clear了只是list的数据,却没用清除它的元素,导致空元素的出现了吧。

0

解决了吗,这个是数据中有一个Items是静态的,你的每次增加一个数据它都会默认的在之前的静态基础上再增加Items,如果你每次增加都会出现新的空白,具体好像是在Items中的一个间距计算类中;

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android RecyclerView隐藏item的所在区域显示空白
说明: RecyclerView隐藏当前item时候,由于为了优化性能,只是把内容隐藏,但是高度不会改变,这样就会出现一片空白区域。 解决方法: 手动改变隐藏的item高度为0。 代码: 比如要隐藏下面xml代码item <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:...
首页刷新后出现空白
我首先打开首页,然后再刷新一遍,ie窗口马上一片空白,过会页面再显示出来。请问,在刷新过程中,页面保留,等ASP解析完了,从服务器完全下载了所需要的文件,再替换以前的页面。
recyclerview删除item刷新列表
删除item坑mModels.remove(i); notifyItemRemoved(i);//必须调用这行代码 notifyItemRangeChanged(i, mModels.size());
android居中显示item的recyclerview
android居中显示item的recyclerview,从中间往两边显示
XRecyclerView加载出现空白item
将布局宽高更改为wrap_content即可
Android RecyclerView隐藏item(多布局)的所在区域显示空白
问题描述 由于需求,需要把recycler view的其中一个条目GONE掉,且该RecyclerView为多布局状态,复写了getItemViewType()方法。若只是把内容隐藏,这样就会出现一片空白区域,高度不会改变。 解决方法 把 item 的高度宽度设置为 0 ;显示的时候再设置回来。 探究 网上的做法是,在onBindViewHolder里调用该方法 //防止隐藏...
RecyclerView 切换数据源导致界面空白问题
BUG: 在做过滤器时,用的是同一个RecyclerView,RecyclerView有加有固定头部,第一类过滤有很多数据超过一屏,第二类没有数据,当第一类数据滑过一屏,切换至第二类时,固定头部上方留有大段空白 解决方案: 将RecyclerView移动至头部 mStaggeredManager.scrollToPositionWithOffset(0, -mUserInfo
android 隐藏listView项后留下空白
隐藏代码:rn[code=java]if(view.getVisibility() == View.GONE)rn view.setVisibility( View.VISIBLE ) ; rn elsern view.setVisibility(View.GONE ) ;rn [/code]rnrn可是总是留下空白的rn[img=http://img.my.csdn.net/uploads/201304/10/1365565368_2574.jpg][/img]rnrn这个问题如何解决,在线等
android RecyclerView item 宽度的问题
[img=https://img-bbs.csdn.net/upload/201604/20/1461117765_751217.png][/img]rnrn加载界面显示的宽度 怎么没有填充整个宽度啊 怎么回事rnrn主布局rn rnrn rnitem 布局rn rnrn rnrnrn rn
Android基于RecyclerView的Item侧滑删除
Android基于RecyclerView的Item侧滑删除 效果预览:https://fir.im/lkbn
Android开发RecyclerView刷新后item里面控件动画
项目中有个列表的item中有点赞动画,之前我用的列表框架是继承listview的,动画用起来一点问题都没有,现在列表框架是继承用的recyclerView,动画就卡主,百思不得其姐。        解决方法:      1.动画要放新线程中,最好加点延时操作。      2.我以为把1操作就解决问题,动画是能正常出来了,但测试来搞事情了,在动画出来的一瞬间,如果去滑动一下列表,动画有卡住了。
RecyclerView刷新Item会造成闪烁bug解决
ItemAnimator animator = recyclerView.getItemAnimator(); if (animator instanceof SimpleItemAnimator) { ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); }参考文档:http://stackoverflow.co
Android 解决RecyclerView瀑布流刷新之后Item位置改变
解决RecyclerView瀑布流刷新之后Item位置改变  为了测试RecyclerView瀑布流效果,每个Item的高度采取了随机高度,导致每次刷新的时候,重新随机出来的高度和原来的不一致,会导致Item位置改变。         解决:在适配器中创建一个集合,用来保存所有Item的高度,刷新之后重新走getView()方法,从集合中获取之前为这个Item分配的高度,并且重新生成的Item
android 解决RecyclerView刷新列表Item闪烁及其混乱问题
android 解决RecyclerView刷新列表Item闪烁及其混乱问题 相信很多朋友在android开发过程中,会遇到RecyclerView的各种坑,今天我先解决其中一种,后续会给大家补充。具体解释也不多说了,毕竟项目紧张,时间紧迫,以后会给大家拿出来分享源码解释的。 解决方法如下: 1.首先         在绑定adapter给RecycleView之前,设定adapter的s...
RecyclerView移除item (里面有解决 RecyclerView 刷新闪屏)
                list.remove(position);  //从列表中移除数据                notifyItemRemoved(position); //通知移除item                 notifyItemRangeChanged(0,list.size()); //刷新数据(不加偶尔会删除 item 的位置错误) 以上直接加在需要删除...
添加或删除RecyclerView的item后 刷新Adapter中的数据源的个数
通常Recycler给Adapter赋上数据源的时候利用:adapter.notifyDataSetChanged();这样一般是在初始化界面 从网络获取到数据后 直接赋给adapter的写法。然后再动态的增加条目,又希望带有动画效果,可以这么写:adapter.notifyItemRangeInserted(int positionStart, int itemCount);嗯,在Recycler
RecyclerView刷新后自动滚动问题
解决方案:RecyclerViewd如果是在Fragment中使用的话, 在布局中设置 android:descendantFocusability="blocksDescendants
Android定点刷新Listview(Gridview)Item!实现指定Item刷新
最近在做Launcher,定制了拖拽互换应用图标位置,但在拖拽过程中,由于 notifyDataSetChanged();次数太多,造成拖拽卡顿不流畅,所以用到了定点刷新,只刷新指定的Item。 理论很简单,就是得到要刷新的Item的View,然后更改该View即可,下面上代码: 效果图: start step1:布局文件<?xml version="1.0" encod
ScrollView嵌套RecyclerView出现item显示不全的问题
ScrollView嵌套RecyclerView出现item显示不全的问题 第一种:在你的RecyclerView上外边嵌套一层RelativeLayout, 然后添加属性 android:descendantFocusability=&quot;blocksDescendants&quot;, 如: &amp;lt;RelativeLayout android:layout_width=&quot;match_pa...
Android RecyclerView 频繁改变数据源出现闪退问题
最近项目中一个播放的列表,有上下切换功能。测试频繁切换更换刷新数据时,报出以下错误: java.lang.IllegalArgumentException Scrapped or attached views may not be recycled. isScrap:false isAttached:true 这个错误查了下,网上没有看到大神给出很给力的解答,stackoverflow上资料多一...
Android Adapter 数据源没有刷新
记录自己的bug . Listdata_list = new ArrayList(); adapter = new Adapter(...data_list); listView.setAdapter(adapter) ... adapter 里面  Listdata_list = new ArrayList(); 构造器中 拿到外部的数据源引用。
Android RecyclerView item动态添加控件重复问题
比如item中的linearLayout根据数据动态addView。 只要在添加之前linearLayout.removeAllViews();就行。
Android RecyclerView的item宽度保持四个半
现在有这么一个需求,实现下图的UI。 我想你应该能想到用RecyclerView实现, 当我唰唰唰几分钟做完之后,UI设计师跟我说,每个item,无论在什么手机上,都要显示四个半,具体看下图。 我们都知道,Android手机的屏幕大小不一,这种需求我们不可能把图片的宽写死,或者写成wrap_content,这个时候就要在java代码中重新测量并且重新设置宽了。代码如下: ...
android RecyclerView使用(二)多类别item
在很多地方我们需要用到列表,而列表又有多种类别的内容显示, 现在列表一般采用recyclerview,那么如何在recyclerview中添加多类别的内容呢? 首先当然是要添加依赖 compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' 在main_activity.xml中添加控件: &amp;lt;?xml version=...
Android——RecyclerView(未解决Item满屏问题)
1.首先使用RecyclerView时要导入依赖包,导包教程:Android Studio导入依赖包教程 2.在布局中加入RecyclerView控件,代码如下: &amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;amp;gt; &amp;amp;lt;RelativeLayout xmlns:android=&amp;quot;http://schemas.android.com
Android中RecyclerView的Item点击事件(总结)
一、直接在onBindViewHolder方法中实现点击事件即可。(实现的是item中的子组件的点击事件) 二、通过自定义接口方法。 1、自定义接口: /** * 自定义接口 */ public interface OnRecyclerViewItemClickListener { public void onItemClick(View view, int postion);...
Android RecyclerView 实现item点击水波纹动画效果
Recyclerview的item如果如果加上水波纹动画的点击效果会使列表的ui体验效果提升很多,今天来给大家介绍一下如何给Recyclerivew的item view添加这样的动画效果。 在res目录的drawable目录和drawable-v21下分别建立linerlayout_water_selector.xml文件。 drawable目录下的linerlayout_water_sele...
RecyclerView隐藏item但位置还在,显示空白
问题:recyclerview隐藏item但位置还在,显示空白; recyclerview 隐藏 item要把 item 的高度宽度设置为 0 ;显示的时候再设置回来。 解决方法: 要注意,在adapter的布局中,不可以把 itemView 高度设置为  match_parent ,否则无效。下面的 linearLayout 是要隐藏的布局                 ViewGr...
Android中RecyclerView的item实现动画的效果
最近,项目中运用RecyclerView去实现item的删除和添加时的动画效果。 之前的想法是用RecyclerView本身的添加和删除的动画如下例子: RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list); recyclerView.setItemAnimator(new SlideInLeftA
Android滑动事件与RecyclerView的item点击事件的冲突
对item的根布局LinearLayout添加点击事件的监听,但是在滑动item的时候(不是竖着滑,而是普通的随意地横向的滑),就会触发点击事件,不明所以。 解决办法: mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { public float y1,y2,x2,...
求助:关于CListCtrl删除一个项后出现空白的问题.
我现在用CListView设计了一个显示文件夹里面的图片的对话框,用的是ICON模式,显示的是图片的缩略图.当我删除了一个图片的缩略图后,就会留下空白的地方,然后后面的不会自己像前移.请问如何实现缩略图的前移?
关于Android Recyclerview隐藏item的所在区域显示大空白问题的解决方案
最近搞了下Recyclerview,做了增加、删除item的功能。item上方有卡签  插个图片看下效果,点击底下的添加上去,同时,底下的item消失,这个用notifyItemInserted和notifyItemMoved就可以解决,但同时现在考勤底下只剩下一个补签功能, 这个时候我点击补签,希望考勤标签也要消失掉,要不难看的要死要死的,所以我视图使用itemView.setVis
Android RecyclerView莫名其妙滚动,RecyclerView 点击item时,莫名其妙的自动滚动,
 如果你的RecyclerView 点击某个item时会出现莫名的滚动,当页面可见时,RecyclerView进入莫名的滚动,这个时候你是否会觉得很神奇,自己查找代码也没有做过RecyclerView滚动操作,这个时候你可能会遇到RecyclerView和item抢占焦点导致的问题,我们暂且可以理解为冲突. 好了言归正传,上干货..... 解决的办法有很多,我目前先列举两种解决办法,个人亲测都...
Android RecyclerView 点击Item Item变大缩小的效果
Android RecyclerView 点击Item Item变大的效果Demo
【奇怪】程序执行后出现空白
请教一下大家,这是我在carbide.C++ 执行的系统自带的那个HelloWorld程序的结果截图,假如我在模拟器点击进去那个HelloWorld的执行程序,是空白的,没有文字显示。问一下各位大侠,这是什么原因?rn[img=http://hi.csdn.net/attachment/201010/16/6090887_1287246361BB8n.jpg][/img]
RecyclerView的item的点击事件
第九天·RecyclerView的点击事件
RecyclerView item 点击事件设置
用过Recyclerview的同学应该知道。 RecyclerView不再负责Item视图的布局及显示,所以RecyclerView也没有为Item开放OnItemClick等点击事件,这就需要开发者自己实现。在调研过程中,发现有同学修改RecyclerView源码来实现Item的点击监听,但认为这不是一个优雅的解决方案。 实现思路:因为ViewHolder我们可以拿到每个Item的根布局,
设置RecyclerView的item的点击事件
一、写一个监听事件接口:MyItemClickListener public interface MyItemClickListener { void onItemClick(View view, int position); } 二、在RecyclerView的适配器RecyclerViewAdapter中,写一个监听方法setOnItemClickListener。适配器代码
RecyclerView定位到当前item:
RecyclerView定位到当前item: mRecyclerView.scrollToPosition(mAdapterPosition);
recyclerview的item删除操作
对Recycle人View的item项进行单选以及全选的删除及取消操作,有助于初学者学习了解Recycle人View的一些简单特性