Вопрос

Я прочитал учебник, и он использует SQLlite и «SimpleCursorAdapter» для заполнения списка элементами.Это код, которому меня научил учебник.

private void fillData() {
        // Get all of the notes from the database and create the item list
        Cursor c = mDbHelper.fetchAllNotes();
        startManagingCursor(c);

        String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
        int[] to = new int[] { R.id.text1 };

        // Now create an array adapter and set it to display using our row
        SimpleCursorAdapter notes =
            new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
        setListAdapter(notes);
    }

Однако... что, если я захочу заполнить его данными XML?Это тот же метод?Может ли кто-нибудь дать мне пример (в коде)?Спасибо.

Это было полезно?

Решение

В примере используется CursorAdapter потому что Cursor объект возвращается методом NotesDbAdapter (если я правильно помню ) fetchAllNotes метод.Я не знаю, есть ли способ передать необработанный XML для создания списка, но вы можете использовать пары имя/значение в HashMap чтобы создать список с помощью SimplelistAdapter.

Вы можете проанализировать свой XML и/или JSON, построить с его помощью хеш-таблицу и использовать ее для заполнения списка.В следующем примере не используется XML, фактически он вообще не динамический, но демонстрирует, как собрать список во время выполнения.Это взято из onCreate метод деятельности, который расширяет ListActivity.Все значения в верхнем регистре представляют собой статические константные строки, определенные в верхней части класса, и используются в качестве ключей.

// -- container for all of our list items
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();

// -- list item hash re-used
Map<String, String> group;

// -- create record
group = new HashMap<String, String>();

group.put( KEY_LABEL, getString( R.string.option_create ) );
group.put( KEY_HELP,  getString( R.string.option_create_help ) );
group.put( KEY_ACTION, ACTION_CREATE_RECORD );

groupData.add(group);

// -- geo locate
group = new HashMap<String, String>();

group.put( KEY_LABEL, getString(R.string.option_geo_locate ) );
group.put( KEY_HELP, getString(R.string.option_geo_locate_help ) )
group.put( KEY_ACTION, ACTION_GEO_LOCATE );

groupData.add( group );

// -- take photo
group = new HashMap<String, String>();

group.put( KEY_LABEL, getString( R.string.option_take_photo ) );
group.put( KEY_HELP, getString(R.string.option_take_photo_help ) );
group.put( KEY_ACTION, ACTION_TAKE_PHOTO );

groupData.add( group );

// -- create an adapter, takes care of binding hash objects in our list to actual row views
SimpleAdapter adapter = new SimpleAdapter( this, groupData, android.R.layout.simple_list_item_2, 
                                                   new String[] { KEY_LABEL, KEY_HELP },
                                                   new int[]{ android.R.id.text1, android.R.id.text2 } );
setListAdapter( adapter );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top