我很想填充数组动态。
我找不到解决方案。正常我会通过任何循环填充数组。
在这种情况下它没有用,我真的花了几个小时才找到解决方案。
我找到了一个在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)
};
答案 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()]
这将为光标中的每条记录创建一个插槽。然后你可以浏览你的循环并填充它。