0

配列の動的配列を埋めるのに行き詰まっています。

解決策が見つかりません。通常、私は任意のループだけで配列を埋めます。

この場合は機能していません。解決策を見つけるために実際に何時間も費やしました。

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 に答える