0

カスタム アダプターと ListView があり、項目を動的に追加しようとしていますが、各項目を動的にハード コードするのではなく、for ループまたは並べ替えを使用して項目を追加する必要があります。

主な機能は次のとおりです。

        Arrivals arrivals_data[] = new Arrivals[] {
                new Arrivals(getResources().getIdentifier(
                        flightInfoArray[1][2].toLowerCase(), "drawable",
                        getPackageName()), "Time:" + flightInfoArray[1][1]
                        + " | Flight:  " + ""
                        + flightInfoArray[1][2].toUpperCase() + ""
                        + flightInfoArray[1][3] + " | From:"
                        + flightInfoArray[1][5] + " | Via:"
                        + flightInfoArray[1][6] + " | Remarks:"
                        + flightInfoArray[1][7] + " | ETA:"
                        + flightInfoArray[1][8]),

    };

    ArrivalsAdapter adapter = new ArrivalsAdapter(this,
            R.layout.listview_arrivals_item_row, arrivals_data);

    listView1 = (ListView) findViewById(R.id.listView1);

    listView1.setAdapter(adapter);

    listView1.setLongClickable(true);

    registerForContextMenu(listView1);

たとえば、次のようになります。

   Arrivals arrivals_data[] = new Arrivals[] {
         for (int i = 0; i < flightInforArray.length; i++) {
                new Arrivals(getResources().getIdentifier(
                        flightInfoArray[i][2].toLowerCase(), "drawable",
                        getPackageName()), "Time:" + flightInfoArray[i][1]
                        + " | Flight:  " + ""
                        + flightInfoArray[i][2].toUpperCase() + ""
                        + flightInfoArray[i][3] + " | From:"
                        + flightInfoArray[i][5] + " | Via:"
                        + flightInfoArray[i][6] + " | Remarks:"
                        + flightInfoArray[i][7] + " | ETA:"
                        + flightInfoArray[i][8]),

        }        
   };

もちろん、それはできません。何かアイデアはありますか?

前もって感謝します!

4

1 に答える 1

0

Arrivals基本的に、配列を動的に作成する必要があります。あなたはこれを行うことができます:

ArrayList<Arrivals> arrivals = new ArrayList<Arrivals>();
for (int i = 0; i < flightInfoArray.length; i++) {
     Arrivals new_arrival = new Arrivals(getResources().getIdentifier(
       flightInfoArray[i][2].toLowerCase(), "drawable",
       getPackageName()), "Time:" + flightInfoArray[i][1]
       + " | Flight:  " + ""
       + flightInfoArray[i][2].toUpperCase() + ""
       ....);

     arrivals.add(new_arrival);
}
//now convert the arraylist to array
Arrivals[] arrivals_data = new Arrivals[arrivals.size()];
arrivals_data = arrivals.toArray(arrivals_data);

arrivals_dataこれで、通常どおりアレイ アダプタにアレイを供給することができます。

ArrivalsAdapter adapter = new ArrivalsAdapter(this,
        R.layout.listview_arrivals_item_row, arrivals_data);
于 2013-05-02T22:51:20.990 に答える