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
因此,我应该在列表中看到两个值,而不是具有相同数组计数的相同值
我不知道我错过了什么
mymCursor
在日志中抛出此值:
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”