我已成功使用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"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句