Frage

las ich ein Tutorial, und es verwendet SQLlite und „SimpleCursorAdapter“ die Liste mit Artikeln zu füllen. Dies ist der Code das Tutorial mich gelehrt hat.

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

Aber ... was ist, wenn ich möchte es Daten mit XML füllen? Ist es das gleiche Verfahren? Kann mir jemand ein Beispiel (in Code) geben? Dank.

War es hilfreich?

Lösung

Das Beispiel wird unter Verwendung eines CursorAdapter weil ein Cursor Objekt durch die NotesDbAdapter zurückgegeben wird fetchAllNotes Methode (wenn ich mich richtig erinnere). Ich weiß nicht, ob es ein Weg in XML-Rohdaten passieren ist, eine Liste zu erstellen, aber Sie können Name / Wert-Paare in einem HashMap verwenden, um eine Liste mit den SimplelistAdapter zu erstellen.

Sie können Ihre xml und oder json und bauen eine Hash-Tabelle mit ihm analysieren und verwenden, die eine Liste zu füllen. Das folgende Beispiel verwendet nicht xml, in der Tat dynamische es gar nicht, aber es zeigt, wie eine Liste zur Laufzeit montieren. Es ist aus der onCreate Methode einer Aktivität genommen, die ListActivity erstreckt. Die alle Groß Werte sind statisch konstante Strings an der Spitze der Klasse definiert und werden als Schlüssel verwendet wird.

// -- 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 );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top