0

我坚持填充 Array 动态。

我找不到解决方案。正常我会通过任何循环填充数组。

在这种情况下它不起作用我真的花了几个小时来寻找解决方案。

我找到了一个在 android 中使用自定义列表的示例。工作正常。

我创建了一个对象测试。

public class Test {
public int icon;
public int PB;
public String title;
public Test(){
    super();
}

public Test(int icon, String title, int PB) {
    super();
    this.icon = icon;
    this.title = title;
    this.PB = PB;
}

}

并在这里填充静态工作正常。但我不知道如何动态填充它。

Test test_data[] = new Test[]
    {
        new Test(R.drawable.ic_launcher, "Test 1", 10),
        new Test(R.drawable.ic_launcher, "Test 2", 100)
    };
4

3 回答 3

1

您可以使用 ArrayList 代替静态数组。

    In case of array u have to define the size at compile time and then add objects to it like:

    Test test_data[] = new Test[10];
    test_data[0] = new Test(R.drawable.ic_launcher, "Test 1", 10);
    test_data[1] = new Test(R.drawable.ic_launcher, "Test 2", 100);
    ....................

我试过上面的代码。这就是给我 NULL 指针异常的原因。

I'm getting data from a database and want to fill this object with the data everytime the activity starts


 You have to use ArrayList like:

 ArrayList<Test> test_data = new ArrayList<Test>;

 test_data.add(new Test(R.drawable.ic_launcher, "Test 1", 10));
 test_data.add(new Test(R.drawable.ic_launcher, "Test 2", 100));

..........
And clear ArrayList by test_data.clear()
于 2012-05-21T06:48:46.980 回答
1

将数据动态分配给数组,如下所示:

 Test [] test_data = 
{
    new Test(R.drawable.ic_launcher, "Test 1", 10),
    new Test(R.drawable.ic_launcher, "Test 2", 100)
};

编辑:

这只能在您第一次实例化数组时完成。如果你已经知道数组有多大,你应该这样做:

Test [] test_array = new Test[size];
for (int i=0; i<size; i++) {
    //DO STUFF
}

如果你不知道从一开始的大小,你应该做的是使用 ListArray,然后将其转换为一个简单的数组(或不转换),这里是代码:

ListArray<Test> list = new ListArray<Test>();
// INSERT VALUES

public Test[] listToArray(ArrayList<Test> list) {
     Test [] result = new Test [list.size());
     for (int i = 0; i<list.size(); i++) {
        result[i] = list.get(i);
     }
     return result;
}
于 2012-05-21T06:57:31.243 回答
0

您需要初始化数组。由于您使用的是数据库,因此数据必须来自游标,因此您可以这样做:

Test test_data[] = new Test[cursor.getCount()] 

这将为光标中的每条记录创建一个槽。然后你可以运行你的循环并填充它。

于 2012-05-21T06:59:21.803 回答