java - 如何从 JSONObject 填充字符串数组以在 ListView 中使用

标签 java android

我有一个 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());
}

最佳答案

使用 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());
  }

关于java - 如何从 JSONObject 填充字符串数组以在 ListView 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13560445/

相关文章:

java - 在Java中将字符串转换为日期

java - 在 doInBackground 方法中使用比较器对 ArrayList 进行排序时出错

android - 类 'Application' 不是抽象的,没有实现抽象成员 public abstract fun registerWith(p0 : PluginRegistry):

android - 更改android应用程序的基本主题颜色

android - Android 平板电脑随机调整大小问题

java - 如何检测文件是否被重命名?

java - 我的 Java 程序 - 查找路径 - 不输出任何内容

java - solr - java 堆空间内存不足

java - System.out.println 不适用于数字

php - 构建用于在 Android 平板电脑上运行 PHP 和 MySQL 的 Android 应用程序