【发布时间】:2016-05-12 01:07:18
【问题描述】:
我对 android 和 java 还很陌生。我正在尝试将 JSON 数据添加到列表视图。我有 JSON 数据进来并打印到日志中,但是我很难将数据放到列表视图中。我已经在行号上尝试了 arraylist 并且它可以工作,但不知道如何在那里获取 JSON 数据。任何指针或建议都将得到应用。
我正在寻找一个喜欢的结果
(键)ID 名称 Tourn_ID (数值)1 Tournamnet1 MI2016 (数值)2 Tournamnet2 UT2016 (数值)3 Tournamnet4 USNC2016 等等
这是我的 Java 代码。
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import static android.R.*;
import static android.R.layout.simple_list_item_1;
import static java.util.Arrays.asList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask task = new DownloadTask();
task.execute("http://www.goalballscoreboard.net/mobile/downloads/WebServices/Tournnames/Tournnames.php?rows=all");
ListView tournListView = (ListView) findViewById(R.id.tournListView);
final ArrayList<String> myTournList = new ArrayList<String>(asList("ROW 1", "ROW 2", "Row3"));
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, simple_list_item_1, myTournList);
tournListView.setAdapter(arrayAdapter);
}
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject jsonObject = new JSONObject(result);
String tournInfo = jsonObject.getString("posts");
Log.i("Tourn INFO", tournInfo);
JSONArray arr = new JSONArray(tournInfo);
List<String> list = new ArrayList<String>();
for (int i = 0; i < arr.length(); i++) {
JSONObject jsonPart = arr.getJSONObject(i);
JSONObject jsonObjectPost = jsonPart.getJSONObject("post");
//Log.i("Each Tournament Object", jsonPart.getString("post"));
Log.i("ID", jsonObjectPost.getString("ID"));
Log.i("Name of Tournament", jsonObjectPost.getString("NAME"));
Log.i("TOURN_ID", jsonObjectPost.getString("TOURN_ID"));
String id = jsonObjectPost.get("ID").toString();
String name = jsonObjectPost.get("NAME").toString();
String tournID = jsonObjectPost.get("TOURN_ID").toString();
list.add(jsonObjectPost.getString("ID") + ", " + jsonObjectPost.getString("NAME") + "," + jsonObjectPost.getString("TOURN_ID") + "\n");
}
System.out.println("" + list.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
【问题讨论】:
-
发布您正在解析的 JSON 和您的适配器类的示例。
-
{"posts":[ {"post":{"ID":"74", "TOURN_ID":"999", "YEAR":"2016", "START_DATE":"2016 -09-07", "END_DATE":"2016-09-18", "DATE_STRING":"2016 年 9 月 7 日至 18 日", "NAME":"2016 年残奥会", "ShortName":"2016 年残奥会", "TOURN_TYPE":"International"}}, {"post":{"ID":"73", "TOURN_ID":"999", "YEAR":"2016", "START_DATE":"2016-06-23 ", "END_DATE":"2016-06-25", "DATE_STRING":"2016 年 6 月 22 日 - 23 日", "NAME":"2016 USABA 全国门球锦标赛", "ShortName":"2016 US Nationals", "TOURN_TYPE ":"国内"}}, ]}
标签: java android json listview arraylist