0
if (status == 200) {
    String result = EntityUtils.toString(response.getEntity());
    Log.d("Response", result);
    ArrayAdapter < String > adapter = new ArrayAdapter < String > (getActivity(),
        android.R.layout.simple_list_item_1, result);
    setListAdapter(adapter);
}

リストに応答を設定できません。私は私の応答を次のように受け取ります { "Appointments": [{
"Name": "Kevin", }, { "Name": "John", }] }

listView で自分の名前パラメーターを設定するにはどうすればよいですか。

4

2 に答える 2

2

listView で自分の名前パラメーターを設定するにはどうすればよいですか。

一目で。の 3 番目のパラメーターはArrayAdapterコレクションにする必要がありますが、単純な文字列のみを渡しています。あなたによると、JSON私はあなたをお勧めします:

  • プロパティ (名前、年齢など) を持つPersonを表す独自のオブジェクトを作成します。
  • JSON人物のコレクションを解析して作成する
  • コレクションを ListAdapter に設定

例:

public class Person {

    private String name;
    ...

    // getters and setters

    @Override
    public String toString() {
       return this.name;
    }
}

JSON次に、適切なデータを解析して取得する必要があります。

List<Person> persons = new ArrayList<Person>();
Person person = null;
JSONObject root = new JSONObject(sourceString);
JSONArray appointments = root.getJSONArray("Appointments");
JSONObject child = null;
for (int i = 0; i < appointments.length(); i++) {
   child = appointments.getJSONObject(i);
   if (child != null)
      person = new Person();
      person.setName(child.getString("Name"));
      persons.add(person);
   }
}

次に初期化しますListAdapter

new ArrayAdapter<String>(getActivity(), layout, persons);

そして今、あなたはそれを手に入れました。

ノート:

メソッドをオーバーライドしている理由toString()は、組み込みの Android レイアウトでデフォルトの ArrayAdapter を使用しているため、List 内の各オブジェクトは String に変換され、ListView に表示されますが、オーバーライドtoString()しないと人のものを返さないためです。名前ですが、人間が読めない文字列であるオブジェクトの文字列表現。

于 2013-03-29T15:47:43.270 に答える
1
  1. result応答全体を含む文字列です。その文字列を必要な項目に解析または分割する必要があります。
  2. アダプターに項目を (リストまたは配列として) 与える必要があります。これでアダプターが作成されましたが、コンストラクターまたはセッターを介してアダプターにデータが提供されていません。

Android 開発者サイトで ListViews と Adapters の詳細を読むことをお勧めします。

于 2013-03-29T15:46:39.077 に答える