【发布时间】:2018-01-25 19:24:13
【问题描述】:
我尝试了很多方法,但我得到了空白布局。我改变了很多行,但结果总是一样的。我是否应该重写代码并尝试不同的东西。我在 youtube 上关注了一些 视频,但没有人有合适的解决方案。我认为这不是因为数组得到了 null 结果。任何人都知道可能出了什么问题:
AirportTransportActivity
public class AirportTransportActivity extends AppCompatActivity {
ListView listView;
ArrayAdapter<String> adapter;
String[] data = new String[0];
JSONObject jsonObject = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_airport_transport);
//Get airport details
Intent intent = getIntent();
String getairport = intent.getStringExtra("airport");
final TextView textViewAirport = (TextView) findViewById(R.id.tvairport);
textViewAirport.setText(getairport);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());
//List view setup
listView = (ListView) findViewById(R.id.lvairport);
//Get airport transport
new RetrieveTask().execute();
//Adapter
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
}
private class RetrieveTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
String strUrl = "http://my database";
URL url = null;
StringBuffer sb = new StringBuffer();
try {
url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream iStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(iStream));
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
iStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
@Override
protected void onPostExecute(String result) {
try {
JSONArray jsonArray = new JSONArray(result);
data = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
data[i] = jsonObject.getString("airporttransportname");
}
} catch (JSONException e) {
e.printStackTrace();
}
adapter.notifyDataSetChanged();
}
}
}
【问题讨论】:
-
能否展示您从服务器获得的 JSON 结果示例?
-
[{"0":"1","id":"1","1":"BHX 伯明翰","机场":"BHX 伯明翰","2":"测试","airporttransportname":"test","3":"van","cartype":"van","4":"5","maxpeople":"5","5":"Birmingham i okolice ","区域":"伯明翰","6":"54321","联系人":"54321"},{"0":"2","id":"2","1":"BHX伯明翰","机场":"BHX 伯明翰","2":"test2","airporttransportname":"test2","3":"轿车","cartype":"轿车","4":"4 ","maxpeople":"4","5":"伯明翰","area":"伯明翰","6":"12345","contact":"12345"}]
-
你的代码工作了吗?
-
不,我现在很困惑,我发现重写代码是最好的选择。
-
我对您的代码做了一些更改。试试看。如果您有任何问题,请告诉我。我现在不在我的开发计算机上,所以我无法测试它。
标签: java android listview android-arrayadapter