2012-05-21 4 views
0

Я застрял в заполнении динамического массива.Android Fill Data Array Dynamic

Я не могу найти решение. Normal Я бы заполнил массив только любым циклом.

Это не работает в этом случае Я действительно потратил часы, чтобы найти решение.

Я нашел пример использования пользовательского списка в 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

.... какой динамический означает? –

+0

Я получаю данные из базы данных и хочу заполнить этот объект данными каждый раз, когда начинается действие. – bnz

ответ

0

динамическое присвоившей данных в массив, как это следующим образом:

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

EDIT:

это может быть сделано только в первый раз экземпляр массива. если вы уже знаете, как большой массив собирается быть, вы должны сделать это:

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

Спасибо большое! Я знал, что это простой султ, которого я не понял, потому что мой ум застрял! – bnz

+0

Но я жду, что я слишком быстро. Можете ли вы дать мне пример, заполняющий это петлей? Я действительно застрял :( – bnz

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 Pointer Exception.

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() 
+0

Allreay попытался. Не работает. Я получаю исключение NULL Pointer Exception. – bnz

+0

Можете ли вы поместить код, который вы пытались использовать для 'ArrayList' – Nishant

+0

, где u получить исключение из null-указателя? –

0

Вам необходимо инициализировать массив. Поскольку вы используете базу данных, данные должны приходить от курсора, так что вы можете сделать это:

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

Это создаст слот для каждой записи в курсоре. Затем вы можете запустить свой цикл и заполнить его.

+0

Размер не проблема. Я пробовал это статичное Это дает мне NULL Указатель Исключение. – bnz