Android填充数据阵列动态

时间:2012-05-21 06:40:38

标签: java android

我很想填充数组动态。

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

在这种情况下它没有用,我真的花了几个小时才找到解决方案。

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

我创建了一个对象Test。

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)
    };

3 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

动态地将数据分配给数组如下:

 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;
}

答案 2 :(得分:0)

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

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

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