正如标题所说的那样。我有两列。我想把它们放到textview中,所以我做到了。但是只有底部的两个结果,每列显示一个。很奇怪。这是我的代码:http://pastebin.com/qNgfHfT3
解析/ onPostExecute位于问题所在的底部。
有一点需要注意:标记为“work”的日志& “dontwork”显示我的所有结果,但onPostExecute(Google& Google1)中的日志仅显示最后的结果,因此我假设错误在从解析到显示的转移中。
非常感谢这里的任何帮助。感谢。
答案 0 :(得分:2)
如果您收到JSON响应,我建议您使用Gson解析它。只要你能用一对线解析整个东西,这是强烈推荐的。 请注意,创建正确的对象就像执行以下操作一样简单:
YourObject object = gson.fromJson(responseReader, YourObject.class);
或者即使您要检索项目列表:
Type listType = new TypeToken<List<YourObject>>() {}.getType();
List<YourObject> objects = gson.fromJson(responseReader, listType);
Here's一个完全符合您需求的示例
完成此过程后,您将在可访问变量中提供对象(或对象列表)。
修改强> 首先你的Asynctask应该有以下参数:
public class HttpTask extends AsyncTask<Void, Void, ArrayList<Driver>> {
并且你的doInBackground方法需要将该数组传递给你的onPostExecute:
@Override
protected ArrayList<Driver> doInBackground(Void... params) {
对于其余部分,我在JSon解析开始时接受它。
//PARSING JSON DATA
try {
JSONObject json_data;
Driver d;
jArray = new JSONArray(result);
int l = jArray.length();
if(l>0){
ArrayList<Driver> drivers = newArrayListList<Driver>();
for (int i = 0; i < l; i++) {
json_data = jArray.getJSONObject(i);
d = new Driver(json_data.optString("Driver_full_name"), json_data.optString("Drives_for"));
drivers.add(d);
Log.i("work", returnString);
Log.i("dontwork", somethingelse);
}
} catch (JSONException e1) {
Log.d("DB", "Error somewhere");
CurrentSeasonDrivers_DriverName.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(CurrentSeasonDrivers_DriversName, "Could not parse data so shut up", Toast.LENGTH_LONG).show();
}
});
}
return drivers;
}
protected void onPostExecute(ArrayList<Drivers>... drivers) {
Log.i("Google", returnString);
Log.i("Google1", somethingelse);
String firstDriverName = drivers.get(0).name;
String firstDriverDrivesFor = drivers.get(0).drivesfor;
String secondDriverName = drivers.get(1).name;
TextView drivername = (TextView) findViewById(R.id.DriverName);
drivername.setText(firstDriverName);
TextView drivesfor = (TextView) findViewById(R.id.DrivesFor);
drivesfor.setText(firstDriverDrivesFor);
}
使用此功能,您的驱动程序的对象将完成圆圈。
public class Driver{
public String name;
public String drivesfor;
public Driver(String _name, String _drivesfor){
name = _name;
drivesfor = _drivesfor;
}
}
我想你可以从这里接管。 让我知道你的进展。