كيف يمكنني ملء قائمة ListView (في Android) مع بيانات XML أو JSON؟

StackOverflow https://stackoverflow.com/questions/2227154

سؤال

قرأت برنامج تعليمي، ويستخدم 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 RAW لإنشاء قائمة ولكن يمكنك استخدام أزواج الاسم / القيمة في HashMap لإنشاء قائمة باستخدام SimpleilistAdapter.

يمكنك تحليل 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