2013-02-28 160 views
0

Scenario-的Android膨胀以特定的顺序

itemnaem A 
itemnaem A 
itemnaem B 
itemnaem B 
itemnaem B 
itemnaem C 
. 
. 
. 
itemnaem c 

我有一个包含50items一个ArrayList的列表视图。 这50个项目中的10个属于A类,20个属于B类,其余属于C类。

我想膨胀一个列表视图,其中所有类型A的项目先来后跟类型B,然后键入C.

从数组列表,我能够单独项到3个不同的表A,B & C.

但面对的顺序显示它们问题即时通讯。

if(aList!=null && aList.size()>0 && countA!=0){ 
       holder.txt.setText(aList.get(position));  
       holder.img.setImageResource(R.drawable.icnA); 
        countA--;   
      } 
      else { 
         if(countA==0 && bList!=null && bList.size()>0 && countB!=0){       
         holder.txt.setText(bList.get(position-aList.size())); 
         holder.img.setImageResource(R.drawable.icnB); 
         countB--; 
         } 
        else{ 
         if(countA==0 && countB==0 && arr!=null && arr.size()>0){ 
           holder.txt.setText(c.get(position-aList.size()-bList.size())); 
           } 
        } 
      } 

countA是A countB列表大小为B

在适配器的利用getCount方法列表大小我已经使用

public int getCount() { 
     return c.size()+AList.size()+BList.size(); 

    } 

问题为列表和b列表它工作正常,但在C列表中它给出了一个索引超出约束例外

+0

我在代码中看不到任何c-list ... – 2013-02-28 11:34:26

+0

我会将这些项目分成3个独立的映射,然后添加到HashMap以保持顺序。 – 2013-02-28 11:43:42

回答

0

我想我已经找到了一些完全wha你需要。您需要在我向您展示的这个特定示例中为sectionItem和EntryItem实现单独的适配器。

假设你知道如何处理适配器和listItems中(定制与自己的item.xml),this is a full fledged tutorial for how to make sections and entries.(Solution #2)

在本教程中,代码以XML布局也给出了,但你可以让自己的自定义布局该部分和入门项目。它非常简单直接。

,使其脱落这样的: enter image description here

+0

我不想做章节。实际上列表C是列表A和B的超集。如果列表不包含任何项目,那么列表B会先到达 – Ciff 2013-02-28 11:48:46

+0

如果您向我们展示您尝试的图片会更好达到目标。 – Nezam 2013-02-28 11:51:13

0

找到了解决办法终于.....

创建linekedHashSet d

D.addAll(a); 
D.addAll(b); 
D.addAll(c); 

的ArrayListË

E.addAll(D); 

并用d来夸大名单rder is maintained :)