0

我正在尝试构建一个应用程序。

我想要的是一个expandable List. an 的每个元素ArrayList<Object>也应该是 List 的一个元素。Parenttitle 应该是对象的标题。此对象还包含一个ArrayList<Double>具有四个元素的。

每个父母都应该有一个孩子。父母的孩子应该显示四个进度条。的第一个元素ArrayList<Double>应该设置第一个progressBar的进度等等。

这就是我现在所拥有的:

public class Lernen extends Activity {

private ExpandableListView mExpandableList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lernen);

    mExpandableList = (ExpandableListView) findViewById(R.id.expandable_list);

    ArrayList<Parent> arrayParents = new ArrayList<Parent>();
    ArrayList<String> arrayChildren = new ArrayList<String>();
    // MUSS GEÄNDERT WERDEN WENN DIE METHODE GETALLCARDS FERTIG IST!!!
    ArrayList<Karteikasten> kasten = new ArrayList<Karteikasten>();

    // teststub:
    Karteikasten foo = new Karteikasten("Kasten 1");
    Karteikasten bar = new Karteikasten("Kasten 2");
    kasten.add(bar);
    kasten.add(foo);
    System.out.println(kasten.size());
    try{
        // here we set the parents and the children
        for (int i = 0; i < kasten.size(); i++) {
            System.out.println("Durchlauf: " + i);
            System.out.println(kasten.get(0).getProgress().get(0).intValue());
            // for each "i" create a new Parent object to set the title and the
            // children
            Parent parent = new Parent();
            parent.setmTitle(kasten.get(i).getName());
            arrayChildren.add("Child " + i);
            parent.setmArrayChildren(arrayChildren);

            ProgressBar pb1 = (ProgressBar) findViewById(R.id.progressBar1);
            pb1.setProgress(kasten.get(i).getProgress().get(0).intValue());

            ProgressBar pb2 = (ProgressBar) findViewById(R.id.progressBar2);
            pb2.setProgress(kasten.get(i).getProgress().get(1).intValue());

            ProgressBar pb3 = (ProgressBar) findViewById(R.id.progressBar3);
            pb3.setProgress(kasten.get(i).getProgress().get(2).intValue());

            ProgressBar pb4 = (ProgressBar) findViewById(R.id.progressBar4);
            pb4.setProgress(kasten.get(i).getProgress().get(3).intValue());


            System.out.println("Kasten: " + kasten.get(i).getName());


            // in this array we add the Parent object. We will use the
            // arrayParents at the setAdapter
            arrayParents.add(parent);
        }
    } catch (Exception e){
        String stackTrace = Log.getStackTraceString(e);
        System.out.println("Fehlermeldung:");
        System.out.println(stackTrace);
    }

    // sets the adapter that provides data to the list.
    mExpandableList.setAdapter(new MyExpandableListAdapter(Lernen.this,
            arrayParents));

}
}

我在该行收到 NullPointerException

pb1.setProgress(kasten.get(i).getProgress().get(0).intValue());

问题可能是,progressBar 位于 layoutlist_item_child.xml中,但该布局不适用于 Activity。

有谁知道如何修理它?

非常感谢!

(抱歉语言不好;))

4

1 回答 1

2

您可以通过定义自己的适配器(从 BaseAdapter 扩展)来设置每一行中的项目,并在那里定义所有样式参数。你可以在这里找到关于这个主题的一个很好的教程:http: //techdroid.kbeanie.com/2009/07/custom-listview-for-android.html

于 2013-01-30T21:58:37.273 回答