Search code examples
javaandroidlistviewlistadapter

Android Eclipse ListView


I have a custom Adapter & a ListView & I'm trying to add the items to it dynamically, not dynamically each item hard coded, I need the items to be added using a for loop or the sort.

Here's the main function:

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

So for example:

   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]),

        }        
   };

That of course can't be done so, any ideas?

Thank you in advance!


Solution

  • You essentially want to create a Arrivals array dynamically. You can do this:

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

    Now you can supply the arrivals_data array to your array adapter as usual.

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