ListView中adapter不展示(代码冗余度的问题)
来源:互联网 发布:工业组态软件实用技术 编辑:程序博客网 时间:2024/05/05 15:51
WhereBuilder builder = WhereBuilder.b("empNo", "=", UserInfo.getInstance().empNo); builder= builder.and("surveyType", "=", type); builder= builder.and("surveyState", "=", surveyState); try { list = CreditApplication.getDbManager().selector(SurInfo.class).where(builder).findAll(); if(list == null){ list = new ArrayList<SurInfo>(); } if (adapter==null) { adapter = new TaskRecyclerViewAdapter(getContext(), list); recyclerView.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } if(list.size() == 0){ linear_no_task.setVisibility(View.VISIBLE); }else { linear_no_task.setVisibility(View.GONE); } Log.i(TAG," list size :"+ list.size()); } catch (DbException e) { e.printStackTrace(); }}
以上的这段代码实在 ViewPager中的Fragment里面的代码,作用是每一个Fragment展示出不同的数据.但是每一次当卸载APP后重新安装的时候,在第一次进入这个Fragment的时候总是没有数据.为了解决这个问题对代码进行的单步调试最后得到了无法刷新出数据的结果,以及最后修改之后的方案.
单步调试:
单步调试发现,在当Activity在通过ViewPager装载Fragment的时候,实际上三次进入了这段代码(ViewPager中有三个Fragment),由于请求的数据是异步的,所以耗时操作会放在不好时的操作之后执行,也就是说,当创建Fragment的时候并没有将网络数据获取并且存入数据库中,所以此时的List = null.每一次adapter也是=null的.
当Fragment新建完之后,异步操作开始执行,真实的数据通过接口回调重新进入这段代码中,此时的size = 1;但是adapter显然已经!=null了,于是就直接往eles走了,实际上真实的数据list并没有setAdapter进去.
因此出现了两种修改方式:
方式1:
WhereBuilder builder = WhereBuilder.b("empNo", "=", UserInfo.getInstance().empNo); builder= builder.and("surveyType", "=", type); builder= builder.and("surveyState", "=", surveyState); try { list = CreditApplication.getDbManager().selector(SurInfo.class).where(builder).findAll(); if(list == null){ list = new ArrayList<SurInfo>(); } if (adapter==null) { adapter = new TaskRecyclerViewAdapter(getContext(), list); recyclerView.setAdapter(adapter); }else {adapter = new TaskRecyclerViewAdapter(getContext(), list); recyclerView.setAdapter(adapter); adapter.notifyDataSetChanged(); } if(list.size() == 0){ linear_no_task.setVisibility(View.VISIBLE); } else { linear_no_task.setVisibility(View.GONE); } Log.i(TAG," list size :"+ list.size()); } catch (DbException e) { e.printStackTrace(); }
方式2:
WhereBuilder builder = WhereBuilder.b("empNo", "=", UserInfo.getInstance().empNo); builder= builder.and("surveyType", "=", type); builder= builder.and("surveyState", "=", surveyState); try { list = CreditApplication.getDbManager().selector(SurInfo.class).where(builder).findAll(); if(list == null){ list = new ArrayList<SurInfo>(); } if(list.size() == 0){ linear_no_task.setVisibility(View.VISIBLE); }else { if (adapter==null) { adapter = new TaskRecyclerViewAdapter(getContext(), list); recyclerView.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } linear_no_task.setVisibility(View.GONE); } Log.i(TAG," list size :"+ list.size()); } catch (DbException e) { e.printStackTrace(); }
项目中采用了第二种修改方式,减少了代码的冗余,没有去新增不必要的adapter对象.
1 0
- ListView中adapter不展示(代码冗余度的问题)
- listview中adapter的notifyDataSetChanged()不生效的问题
- listview中adapter的notifyDataSetChanged()不生效的问题
- listview中adapter的notifyDataSetChanged()不生效的问题
- Android中ListView的addFooterView不显示的有关问题和adapter
- ScrollView或者ListView中嵌套ViewPager,展示不出来问题。
- ScrollView或者ListView中嵌套ViewPager,展示不出来问题。
- Android中Listview设置footerView后不展示的问题原因探究
- listView的adapter问题
- android listview adapter 不调用getview的问题
- ListView的adapter中getView被多次调用的问题
- ListView中Adapter的自定义
- ListView中adapter的作用
- listview嵌套listview,子listview中有换行的textview展示有问题,肿么办?
- Adapter中notifyDataSetChanged()不刷新GetView的问题
- Android自定义ListView或GridView适配器Adapter的getView方法不执行的问题
- GridView,ListView 等adapter容器view设置setOnItemClickListener不响应的问题。
- listview的adapter中的一些问题
- 商业杂志图表的经典用色
- 目标检测制作自己的VOC2007数据集
- spring学习-3-AOP
- ASmack4.0.7详细讲解
- 数据库连接问题
- ListView中adapter不展示(代码冗余度的问题)
- 提高C#编程水平的50个要点 之九“理解Reference Equals(), static Equals(), instance Equals(), 和运算行符==之间的关系”
- js位置不同导致结果不同
- Java奇葩笔试题
- mysql模糊查询
- 事件对象(event)、事件冒泡、默认行为
- [高并发Java 六] JDK并发包2
- Aizu-0118 Property Distribution(深搜)
- TCP/IP协议(零)TCP/IP参考模型