3

android / javaタスクがあり、JSON値を文字列配列に取得してListViewに表示したいのですが、どこから始めればよいのかわかりませんか?ありがとう。

private String[] values;
...
// this is what is returned from the web server (Debug view)
// jObj = {"success":1,"0":"Mike","1":"message 1","2":"Fred","3":"message 2","4":"John","5":"message 3"};

try {
   if (jObj.getInt("success") == 1) {
      .
      // what i'm trying to do here is iterate thru JObj and assign values to the 
      // values array to populate the ArrayAdapter so that the ListView displays this:
      //
      // Mike: Message 1
      // Fred: Message 2
      // John: Message 3
      //
      .
      this.setListAdapter(new ArrayAdapter<String>(
         this, android.R.layout.simple_list_item_1, android.R.id.text1, values));
      ListView listView = getListView();
   }
}
catch (JSONException e) {
   Log.e(TAG, e.toString());
}
4

3 に答える 3

1

ArrayListの代わりにを使用Arrayして、Json Obejctから取得した値を追加し、ListViewのArrayListをデータソースとして設定します。コードを次のように変更します。

 ArrayList<String> array_list_values = new ArrayList<String>();
try {
       if (jObj.getInt("success") == 1) {

        array_list_values.add(jObj.getString("0"));
        array_list_values.add(jObj.getString("1"));
        array_list_values.add(jObj.getString("2"));
        array_list_values.add(jObj.getString("3"));
        array_list_values.add(jObj.getString("4"));
        array_list_values.add(jObj.getString("5"));
        this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, array_list_values));
                ListView listView = getListView();
            }
     }
catch (JSONException e) {
      Log.e(TAG, e.toString());
  }

編集:メッセージの数が常に同じであるとは限らない場合は、1からそれ以上の数になる可能性があります。JsonObjectを次のように繰り返すことができます。

 ArrayList<String> array_list_values = new ArrayList<String>();
try {
       if (jObj.getInt("success") == 1) {

        Iterator iter = jObj.keys();
        while(iter.hasNext()){
        String key = (String)iter.next();
        String value = jObj.getString(key);
        array_list_values.add(value);
        }


        this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, array_list_values));
                ListView listView = getListView();
            }
     }
catch (JSONException e) {
      Log.e(TAG, e.toString());
  }
于 2012-11-26T07:40:06.993 に答える
0

そのようなことをして、素晴らしいGSONライブラリを使用する必要があります。

InputStream source = retrieveStream(url);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
APIResponse response = gson.fromJson(reader, APIResponse.class);

と:

Public class APIResponse{

public String 0;
public String 1;
public String 2;
public String 3;
public String 4;
public String 5;
public String succes;

}

ただし、変数に0,1,2,3,4,5という別の名前を見つける必要があるため、これは機能しません。

サーバー側で変更してください

于 2012-11-26T07:39:43.737 に答える
0
JSONObject jsonObject = new JSONObject(jsonString);
String value0 = jsonObject.getString("0");  

またはforループ

String tempArray[] = new String[5];

ただやる

for(int i=0;condition;i++){
    tempArray[i] = jsonObject.getString(String.ValueOf(i));
}

アレイをアダプタに渡します

于 2012-11-26T07:40:37.680 に答える