Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 已迭代检索项,而不是添加新值_Java_Android_Json_Arraylist - Fatal编程技术网

Java 已迭代检索项,而不是添加新值

Java 已迭代检索项,而不是添加新值,java,android,json,arraylist,Java,Android,Json,Arraylist,我正在从JSON检索数据,如下所示: worker: [{ content: "android" }, { content: "java" }] 所以我想我会看到值(android、java),但这不会发生,我只看到java迭代: 这是我从JSON中获取数组长度的方法: 我正确获取数组并使用SharedReference传递它: JSONArray workerArr = object.getJSONArray("worker"); String jsonString = w

我正在从
JSON
检索数据,如下所示:

worker: [{
    content: "android"
}, {
    content: "java"
}]
所以我想我会看到值(android、java),但这不会发生,我只看到java迭代:

这是我从
JSON
中获取数组长度的方法:

我正确获取数组并使用
SharedReference
传递它:

JSONArray workerArr = object.getJSONArray("worker");
String jsonString = workerArr.toString();
SharedPreferences settings = getSharedPreferences("pref", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("jsonString", jsonString);
editor.commit();
然后我通过这种方式得到这个长度:

SharedPreferences settings = getSharedPreferences("pref", 0);
String jsonString = settings.getString("jsonString", null);
JSONArray jsonArray = null;
try {
    jsonArray = new JSONArray(jsonString);
    Log.i(TAG, "displayCommentsJsonArray: " + jsonArray);
} catch (JSONException e) {
    e.printStackTrace();
}
下面是我如何将检索到的项添加到列表中

List<String> top250 = new ArrayList<String>();
if (jsonArray != null) {
    for (int i = 0; i < jsonArray.length(); i++) {
        String value = "";
        value = mCursor.getString(ArticleLoader.Query.WORKERS);
        top250.add(value);
        listDataChild.put(listDataHeader.get(0), top250);
    }
}
List top250=新建ArrayList();
if(jsonArray!=null){
for(int i=0;i
因此,我应该在列表中看到两个值,而不是具有相同数组计数的相同值

我不知道我错过了什么

my
mCursor
在日志中抛出此值:

prepareListData:java prepareListData:java


您正在迭代
jsonArray
,但我看不到任何解析数据的代码

移动
listDataChild.put(listDataHeader.get(0),top250)在循环之外。(如@Sac所指)

请尝试下面的代码

if (jsonArray != null) {
    List<String> top250 = new ArrayList<String>();
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject object = jsonArray.getJSONObject(i);
        String value = object.getString("content");
        top250.add(value);
    }
    listDataChild.put(listDataHeader.get(0), top250);
}
if(jsonArray!=null){
List top250=新的ArrayList();
for(int i=0;i

我不知道
mCursor
变量的内容。

使用同一个键更新不同的值可以直接从jsonArray获取值。字符串值=jsonArray.optJSONObject(i).optString(“内容”);top250.追加(值);我认为您应该将这一行放在for循环之外:listDataChild.put(listDataHeader.get(0),top250);您是否引用了
mCursor.getString(ArticleLoader.Query.WORKERS)
?请检查您是否正在为每次迭代更新mCursor的指针。@minhazur check update Please,它是相同的值“java”