-
!?。?查看全部
-
!1!!查看全部
-
!!!查看全部
-
?。。?查看全部
-
?。?!查看全部
-
?。?!查看全部
-
效果圖查看全部
-
!??!查看全部
-
***然后根據(jù)不同的類型去取不同的數(shù)據(jù)。查看全部
-
***然后還要把三個列表給存進來,查看全部
-
***然后還要去Adapter當中進行改造,找到onBindViewHolder()方法,將((TypeAbstractViewHolder))holder).bingHolder(mList.get(position)); 改成: int viewType = getItemViewType(position);//首先通過該方法得到相應(yīng)位置的viewType然后去得到一個realPosition,其等于目前傳進來的position減去我們拿到的那個起始位置的position,realPosition就是在對應(yīng)每個列表當中的position.查看全部
-
***因為DataModel不需要用了,所以現(xiàn)在要修改一下那三個ViewHolder.將bindHolder()方法的參數(shù)改成相應(yīng)的Model的對象。然后在前面的類名繼承的那個TypeAbstractViewHolder中指定相應(yīng)的泛型即可。查看全部
-
***將TypeAbstractViewHolder進行修改一下,將抽象方法bindHolder()里面的參數(shù):DataModel model 改成用泛型表示即可 :T model查看全部
-
***1、改寫addList()方法里面的參數(shù)。 2、創(chuàng)建addListByType()方法, 3、創(chuàng)建一個list集合,泛型指定為Integer,里面承裝的是type類型的值。 4、將getItemViewType()方法的返回值:mlist.get(position).type改成:types.get(postion) 5、將getItemCount()方法的返回值:mlist.size()改成:types.size(); 6、List<Integer>的對象types是我們的第一個數(shù)據(jù)結(jié)構(gòu),利用addListByType()方法里面的for循環(huán)將每一個type放到types里面 7、然后我們還需要一個數(shù)據(jù)結(jié)構(gòu),來記錄每個類型的List在types里面的起始位置是什么,需要用Map去記錄。 8、因為現(xiàn)在我們用types這個數(shù)組去遍歷的話,我們根本就不知道每個對應(yīng)上的position在這三個列表當中對應(yīng)的真實數(shù)據(jù)的位置是不知道的。 9、所以我們干脆把每個list的起始位置在types中的哪里,把它給記錄下來。-mpostion.put(type,types.size())。types的長度就是下一個list的起始位置。 10、因為原來的DataModel里面定義的那些類型值不需要再被引用了,將其復制到Adapter當中即可。然后這樣子封裝完之后,在addList()方法里面,調(diào)用addListByType()方法,將各個list以及其對應(yīng)的類型作為參數(shù)傳進去。 11、做完上一步之后只需要遍歷types然后根據(jù)mposition去拿數(shù)據(jù)就好了。查看全部
-
?。。?查看全部
舉報
0/150
提交
取消