Fragment的整个界面就一个listview,写了一个homeitem的实体,里面包含的banner,linearlayout以及recycleview都是作为homeitem里面的一个对象,用mvp架构实现网络数据的请求,在fragment中实现IView接口,来显示model层获取的数据,每个item显示不同的数据,然后再add到homeitemlist中,将homeitemList作为数据添加给listview,但是因为有多个Item需要加载的数据不同,导致在fragment实现IView接口的showdata()方法中不知道怎样给不同的homeitem里add数据,求助大神给说一下该怎么写,在此十分感谢。

解决方案 »

  1.   

    在shoudata里将数据给list数据源,刷新adapter,在adapter中,数据里总有status状态之类的用于判断的,在分别显示就行
      

  2.   

    我一般加一个ViewModel, 里面的属性对应界面变化(例如文字、控件显示不显示)。一般服务器请求回来的数据bean不动,中间的转换通过这个ViewModel。
    当然我这么做的前提是使用了DataBinding做数据绑定,如果不借助这么写工作量会加大不少。而且我喜欢把简单的adapter放在界面的类中,所以在我看来adapter和界面是一起的,所以加入了ViewModel。你也可以把Adapter独立拿出来看(作为你的观点),它不属于View这个层级。所以你在adapter中做数据解析,也不违背MVP。(个人理解这些模式给了一个方向,保证程序的解耦啊健壮啊。其实严格按照一个规则来写程序,至少在阅读和理解代码时都会方便很多)
      

  3.   

    在对应的地方取对应的数据显示就好了。
    public class ListDO {
        private String banner;
        private String linearLayout;
        private List<String> recycleview;
        private String other1;
        private String other2;
        private String other3;    public class RecycleDO {
            private String data;
        }
    }
      

  4.   

    在adapter中定义一个addData方法,动态添加到集合,adapter.notify……
      

  5.   

    首先你说多个 item 要加载的数据不同这就是不对的
    这就好比, 你要做3件事情,一种情况是3件一起做,一种情况是有顺序的做,那么后面那种情况肯定就会出现你不知道该先做哪件事情的时候.
    针对这样的情况,只有从源头调整,也就是说从服务器获取的数据就应该包含整个的数据,并且是在一个json中,这样你拿到数据,再去处理相应的 item 就可以了,很完美,也很简单,可以跟服务器的同事沟通