Многомерный массив в ListView .. как? - PullRequest
0 голосов
/ 23 апреля 2010

У меня есть набор результатов запроса, который я сначала хочу отредактировать, а затем поместить в мой ListView. Не редактируя мои данные в первую очередь, я мог бы использовать SimpleCursorAdapter следующим образом:

ListAdapter adapter = new SimpleCursorAdapter(
    this, 
    R.layout.list_item, 
    mCursor, 
    new String[] { "address", "city" }, 
    new int[] { R.id.address, R.id.zip_city });
this.setListAdapter(adapter);

Но теперь я помещаю все в многомерный массив так:

if(mCursor.isFirst()) {

        //create a new array
        String[][] listData = new String[mCursor.getCount()][3];

        int i = 0;
        do {

            listData[i] = new String[] {
                mCursor.getString(mCursor.getColumnIndex("address")),
                mCursor.getString(mCursor.getColumnIndex("zip")) + " " + mCursor.getString(mCursor.getColumnIndex("city")),
                calculateDistance(Double.parseDouble(mCursor.getString(mCursor.getColumnIndex("diff"))))
                };

            i++;

        } while(mCursor.moveToNext());

    }

Итак, моя проблема сейчас, я понятия не имею, как поместить это в мой ListView. Может ли кто-нибудь помочь мне здесь? Извините за мои плохие знания английского и Java. :)

Ответы [ 2 ]

0 голосов
/ 17 апреля 2014

КАК ИСПОЛЬЗОВАТЬ LISTVIEW С МНОГОМЕРНОЙ СИСТЕМОЙ

Ребята, самый простой способ выглядит следующим образом -

В вызывающем действии давайте назовем его FirstActivity, вы объявляете многомерный массив как общедоступный static

public static MyArray[][];

Во втором упражнении вы обращаетесь к этому массиву, используя -

FirstActivity.MyArray

Теперь создайте одномерный массив, который читает только один столбец из многомерного массива, используя цикл, например

for(int i = 0; i < FirstActivity.MyArray.length; i++){ SingleArray[i] = FirstActivity.MyArray[i][0];}

Затем используйте адаптер для привязки списка к SingleArray

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, SingleArray));

Просто не забывайте каждый раз очищать массивы, чтобы они не сохраняли значения, сделанные ранее.

Привет

Крейг Паардекупер

0 голосов
/ 23 апреля 2010

Либо напишите свой собственный класс адаптера, расширяющий BaseAdapter, который работает с вашим массивом, либо переключитесь на другую структуру данных, например MatrixCursor.

...