Question

Je lis un tutoriel, et il utilise SqlLite et « SimpleCursorAdapter » pour remplir la liste des articles. Voici le code du tutoriel m'a appris.

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

Mais ... si je veux le remplir avec des données XML? Est-ce la même méthode? Quelqu'un peut-il me donner un exemple (en code)? merci.

Était-ce utile?

La solution

L'exemple utilise un CursorAdapter parce qu'un objet Cursor est renvoyé par le NotesDbAdapter (si je me souviens bien) méthode fetchAllNotes. Je ne sais pas s'il y a un moyen de passer en XML brut pour créer une liste, mais vous pouvez utiliser des paires nom / valeur dans un HashMap pour créer une liste à l'aide du SimplelistAdapter.

Vous pouvez analyser votre xml et ou JSON et construire une table de hachage avec elle et l'utiliser pour remplir une liste. L'exemple suivant ne pas utiliser xml, en fait, il est pas dynamique du tout, mais il ne démontre comment assembler une liste lors de l'exécution. Il est tiré de la méthode onCreate d'une activité qui s'étend ListActivity. Toutes les valeurs en majuscules sont des chaînes constantes statiques définies dans la partie supérieure de la classe, et sont utilisées comme les touches.

// -- 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 );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top