-
!!!查看全部
-
!1!!查看全部
-
!!!查看全部
-
!!!查看全部
-
!!!查看全部
-
!!!查看全部
-
效果图查看全部
-
!!!查看全部
-
***然后根据不同的类型去取不同的数据。查看全部
-
***然后还要把三个列表给存进来,查看全部
-
***然后还要去Adapter当中进行改造,找到onBindViewHolder()方法,将((TypeAbstractViewHolder))holder).bingHolder(mList.get(position)); 改成: int viewType = getItemViewType(position);//首先通过该方法得到相应位置的viewType然后去得到一个realPosition,其等于目前传进来的position减去我们拿到的那个起始位置的position,realPosition就是在对应每个列表当中的position.查看全部
-
***因为DataModel不需要用了,所以现在要修改一下那三个ViewHolder.将bindHolder()方法的参数改成相应的Model的对象。然后在前面的类名继承的那个TypeAbstractViewHolder中指定相应的泛型即可。查看全部
-
***将TypeAbstractViewHolder进行修改一下,将抽象方法bindHolder()里面的参数:DataModel model 改成用泛型表示即可 :T model查看全部
-
***1、改写addList()方法里面的参数。 2、创建addListByType()方法, 3、创建一个list集合,泛型指定为Integer,里面承装的是type类型的值。 4、将getItemViewType()方法的返回值:mlist.get(position).type改成:types.get(postion) 5、将getItemCount()方法的返回值:mlist.size()改成:types.size(); 6、List<Integer>的对象types是我们的第一个数据结构,利用addListByType()方法里面的for循环将每一个type放到types里面 7、然后我们还需要一个数据结构,来记录每个类型的List在types里面的起始位置是什么,需要用Map去记录。 8、因为现在我们用types这个数组去遍历的话,我们根本就不知道每个对应上的position在这三个列表当中对应的真实数据的位置是不知道的。 9、所以我们干脆把每个list的起始位置在types中的哪里,把它给记录下来。-mpostion.put(type,types.size())。types的长度就是下一个list的起始位置。 10、因为原来的DataModel里面定义的那些类型值不需要再被引用了,将其复制到Adapter当中即可。然后这样子封装完之后,在addList()方法里面,调用addListByType()方法,将各个list以及其对应的类型作为参数传进去。 11、做完上一步之后只需要遍历types然后根据mposition去拿数据就好了。查看全部
-
!!!查看全部
举报
0/150
提交
取消