0
我在解析来自URL的JSON的代码时遇到问题,应该更新一个listview。
这是我的代码:
如何将项目从JSON添加到列表视图?
private String sometext;
public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
final String TAG = "AsyncTaskParseJson.java";
// contacts JSONArray
JSONArray dataJsonArr = null;
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
try {
// instantiate our json parser
JSONParser jParser = new JSONParser();
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String userEmailVariable = settings.getString("variable1", "");
// get json string from url
JSONObject json = jParser.getJSONFromUrl("path/to/jsonpage.php", userEmailVariable.toString());
// get the array of users
dataJsonArr = json.getJSONArray("Files");
// loop through all users
for (int i = 0; i < dataJsonArr.length(); i++) {
JSONObject c = dataJsonArr.getJSONObject(i);
sometext = "";
// Storing each json item in variable
String id = c.getString("id");
String type = c.getString("type");
String name = c.getString("name");
String icon = c.getString("icon");
sometext = name.toString();
if(icon.toString().length() == 0){
icon = "default";
}
// show the values in our logcat
Log.i(TAG, "type: " + type
+ ", name: " + name
+ ", icon: " + icon);
runOnUiThread(new Runnable() {
@Override
public void run() {
populatelist(sometext);
}
});
}
} catch (JSONException e) {
Log.i(TAG, "Errore LS: Errore del JSON in Files");
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {}
}
public void populatelist(String name) {
final String TAG = "Popolazione lista";
ListView myListView = (ListView)findViewById(R.id.userContentList);
ArrayList<String> myStringArray1 = new ArrayList<String>();
myStringArray1.add(name);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item, R.id.file_list, myStringArray1);
myListView.setAdapter(adapter);
Log.i(TAG, name);
}
的问题是,这个代码仅增加了JSON数组的最后一项,即使在logcat中正确显示的每个条目。
似乎populatelist每次获得相同的名称值。
这段代码有什么问题?我是Android和Java开发人员的新手。
嗨,谢谢你帮助我。无论如何,在populatelist()在行ArrayAdapter < String > adapter = new ArrayAdapter < String >(getApplicationContext(),R.layout.list_item,R.id.file_list,myStringArray1);它说'无法解析符号myStringArray1'。为什么? 更新:非常感谢!现在它工作了! :D – 2015-02-08 17:41:54
@FrancescoSorge在'populatelist'方法中传递'myStringArray1'作为参数(见编辑) – 2015-02-08 17:45:38
非常感谢!现在它完美的工作! :D – 2015-02-08 17:46:09