【问题标题】:Quick ArrayList load快速加载 ArrayList
【发布时间】:2013-07-08 11:36:47
【问题描述】:

在下面的代码中,我正在一个一个地加载一个带有数据的 ArrayList。

此 ArrayList 用于 ExpandableListView。所以它包含组和孩子。

每个组都有一个名称和一个描述。

每个孩子都有一个名字。

有些组没有子代。

public class CategoriesExpandableList extends Activity implements OnChildClickListener,
OnGroupClickListener, OnGroupExpandListener, OnGroupCollapseListener {

private static Context mContext;
private ExpandListAdapter ExpAdapter=null;
private ArrayList<ExpandListGroup> ExpListItems;
ArrayList<ExpandListGroup> list=null;
private ExpandableListView ExpandList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.categoriesexpandable);
    ExpandList = (ExpandableListView) findViewById(R.id.ExpList);   
    ExpListItems = SetStandardGroups();
    ExpAdapter = new ExpandListAdapter(CategoriesExpandableList.this, ExpListItems);
    ExpandList.setAdapter(ExpAdapter);
    ExpandList.setOnGroupClickListener(this);
    ExpandList.setOnChildClickListener(this);
    mContext=this;
}

public ArrayList<ExpandListGroup> SetStandardGroups() {

            ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>();
            ArrayList<ExpandListChild> list2 = new ArrayList<ExpandListChild>();

            ExpandListGroup gru0 = new ExpandListGroup();
            gru0.setName("My Favorites");
            gru0.setDescription("My favourite points of interest");
            gru0.setItems(list2);
            list2 = new ArrayList<ExpandListChild>();

            ExpandListGroup gru1 = new ExpandListGroup();
            gru1.setName("Essentials");
            gru1.setDescription("Very essential points of interest");
            gru1.setItems(list2);
            list2 = new ArrayList<ExpandListChild>();

            ExpandListGroup gru2 = new ExpandListGroup();
            gru2.setName("Sights");
            gru2.setDescription("Beautiful sights you have to visit");
            gru2.setItems(list2);
            list2 = new ArrayList<ExpandListChild>();

            ExpandListGroup gru3 = new ExpandListGroup();
            gru3.setName("Beaches");
            gru3.setDescription("Beaches near Agios Nikolaos");
            ExpandListChild ch3_0 = new ExpandListChild();
            ch3_0.setName("In town");
            ch3_0.setTag(null);
            list2.add(ch3_0);
            ExpandListChild ch3_1 = new ExpandListChild();
            ch3_1.setName("Outside town");
            ch3_1.setTag(null);
            list2.add(ch3_1);
            gru3.setItems(list2);
            list2 = new ArrayList<ExpandListChild>();

            list.add(gru0);
            list.add(gru1);
            list.add(gru2);
            list.add(gru3);

            return list;
        }

}

我想知道是否有一种快速的方法可以在 ArrayList 中加载这些数据。例如通过调用这样的方法:

addPoint(String groupname, String groupdescription, String child01)

addPoint("Banks", "Banks and ATMs", "Only banks")
addPoint("Banks", "Banks and ATMs", "Only ATMs")

// Here i have only a group and no children...
addPoint("Sights", "Beautiful sights to visit", "")

【问题讨论】:

    标签: android arraylist expandablelistview


    【解决方案1】:
    public ArrayList<ExpandListGroup> SetStandardGroups() {
    
                ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>();
                ArrayList<ExpandListChild> list2 = new ArrayList<ExpandListChild>();
    
                String[][] expandablelist={ {"My Favorites", "My favourite points of interest","","","","","","","","","",""},
                        {"Essentials", "Very essential points of interest","","","","","","","","","",""},
                        {"Sights", "Beautiful sights you have to visit","","","","","","","","","",""},
                        {"Beaches", "Nice beaches","In town","Around town","","","","","","","",""},
                        {"Banks", "Banks and ATMs","","","","","","","","","",""},
                        {"Pharmacies", "All pharmacies near you","","","","","","","","","",""},
                        {"Doctors", "Doctors in case of emergency","Pediatricians","Pathologists","General doctors","Eye doctors","Surgeons","Otorhinolayngologists","Orthopaedists","Gynecologists","Dermatologists","Cardiologists"}
                };
    
                for(int i=0; i<=6; i++) {
    
                    System.out.println("i= "+i);      
                    ExpandListGroup gru = new ExpandListGroup();
                    gru.setName(expandablelist[i][0]);
                    gru.setDescription(expandablelist[i][1]);
    
    
                    for(int j=2; j<=11; j++) {
                        System.out.println("j= "+j);
                        System.out.println("length= "+expandablelist[i][j].length());
                        if(expandablelist[i][j].length()!=0) {
                            ExpandListChild chld = new ExpandListChild();
                            chld.setName(expandablelist[i][j]);
                            chld.setTag(null);
                            list2.add(chld);
                        }
                    }
                    if(list2!=null) {
                        gru.setItems(list2);
                    }
                    list2 = new ArrayList<ExpandListChild>();
                    list.add(gru);
                }
    }
    

    我找到了一种从 Array 加载 ArrayList 的方法,就像您在上面的代码中看到的那样。 感谢您阅读我的问题。 我相信有更好的解决方案,如果我有时间我会尝试解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      相关资源
      最近更新 更多