Android按特定顺序对列表视图进行充气

时间:2013-02-28 11:28:41

标签: android android-listview

方案 -

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

我有一个包含50个字符的arraylist。 在50个属于A类的50个项目中,20个属于B类,其余属于C类。

我想要一个列表视图,其中所有类型A项首先出现,然后是类型B,然后键入C.

从数组列表中我可以将这些项目分成3个不同的列表A,B&下进行。

但我面临的问题是按顺序显示它们。

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列表中它给出了一个索引超出范围的异常

2 个答案:

答案 0 :(得分:0)

我想我找到了你需要的东西。在我给你展示的这个特定例子中,你需要为sectionItem和EntryItem实现单独的适配器。

假设您知道如何处理适配器和ListItems(使用您自己的item.xml自定义),this is a full fledged tutorial for how to make sections and entries.(Solution #2)

在本教程中,还给出了xml布局的代码,但是您可以为section和entryitems制作自己的自定义布局。它非常简单明了。

这样就会像这样: enter image description here

答案 1 :(得分:0)

最终找到解决方案.....

创建了linekedHashSet D

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

arraylist E

E.addAll(D);

并使用d来扩充列表。维护订单:)