[英]How to populate JSON data into ListView using ArrayList
我已使用 ArrayList 成功將 JSON 數據解析為 ListView,但無法根據City
名稱填充 List。
就像我允許用戶選擇城市,然后我嘗試使用新的 ArrayList 將結果填充到 ListView 中,但沒有將任何數據放入 ListView。
public class TitleListActivity extends Activity {
....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_title);
......
new JSONAsyncTask().execute("http://murl.com/json/citywise.json");
try {
Bundle extras = getIntent().getExtras();
if (extras != null) {
value = extras.getString("new_variable_name");
Toast.makeText(TitleListActivity.this, value, Toast.LENGTH_LONG).show();
// not getting data city wise
cityWiseSearch();
}
else
{
// getting all data
adapter = new TitleListAdapter(TitleListActivity.this, R.layout.row, allArrayList);
listview.setAdapter(adapter);
}
} catch (Exception e) {
// TODO: handle exception
}
....
}
class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {
ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... urls) {
try {
....
JSONArray jarray = jsono.getJSONArray("cities");
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
destination = new TitleList();
destination.setTitle(object.getString("address"));
allArrayList.add(destination);
......
return false;
}
protected void onPostExecute(Boolean result) {
dialog.cancel();
....
}
}
public void cityWiseSearch() {
for (int i = 0; i <allArrayList.size(); i++) {
destination = (TitleList) allArrayList.get(i);
String strStatuss = allArrayList.get(i).getCity();
if (strStatuss.equalsIgnoreCase(value)){
cityArrayList.add(destination);
}
}
adapter = new TitleListAdapter(TitleListActivity.this, R.layout.row, cityArrayList);
listview.setAdapter(adapter);
}
}
把你的setAdapter code inside onPostExecute
,你必須要獲取city
名稱,你取title
中cityWiseSearch比較城市名稱()方法
destination.setCity(object.getString("city"));
我認為你的ListView
是空的,因為你更新了ArrayList
但你必須在調用之前將allArrayList
發送到適配器
adapter.notifyDataSetChanged();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.