У меня есть список в моем приложении Android, в котором отображаются данные из загрузки & синтаксический анализ json. В этом списке, OnItemClickListener не отвечает после первых пяти или шести пунктов. Может кто-нибудь, пожалуйста, скажите мне, в чем моя проблема?Listview не отвечает на OnItemClickListener после первых нескольких элементов
Вот мой код ListView:
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
try {
String s = BookJsonParser.ids[arg2];
String bookDetailUrl = url + s;
DownloadBookDetail downloadTaskbookDetail = new DownloadBookDetail();
downloadTaskbookDetail.execute(bookDetailUrl);
} catch (Exception e) {
System.out.println(e.printStackTrace(););
}
}
});
DownloadBookDetail является AsyncTask где Json Строка загрузки в это метод doInBackGround & он открывает еще один AsyncTask в этом onPostExecute метод. Во второй asyncTask, я разбираю json в doInBackground метод &, загружая listview с помощью адаптера в методе onPostExecute. Код Второго AsyncTask в:
/** AsyncTask to parse json data and load ListView */
private class ListViewLoaderTask extends
AsyncTask<String, Void, SimpleAdapter> {
JSONObject jObject;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(BookActivity.this);
pDialog.setMessage("Listing New Books...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
// Doing the parsing of xml data in a non-ui thread
@Override
protected SimpleAdapter doInBackground(String... strJson) {
try {
jObject = new JSONObject(strJson[0]);
BookJsonParser countryJsonParser = new BookJsonParser();
countryJsonParser.parse(jObject);
} catch (Exception e) {
Log.d("JSON Exception1", e.toString());
}
// Instantiating json parser class
BookJsonParser countryJsonParser = new BookJsonParser();
// A list object to store the parsed countries list
List<HashMap<String, Object>> countries = null;
try {
// Getting the parsed data as a List construct
countries = countryJsonParser.parse(jObject);
System.out.println(countries.toString());
} catch (Exception e) {
Log.d("Exception", e.toString());
}
// Keys used in Hashmap
String[] from = { "country", "flag", "author" };
// Ids of views in listview_layout
int[] to = { R.id.tv_bookName, R.id.list_image, R.id.tv_bookAuthor };
// /////////
/*
* for (int i = 0; i < BookJsonParser.ids.length; i++) {
* System.out.println(BookJsonParser.ids[i]); }
*/
// Instantiating an adapter to store each items
// R.layout.listview_layout defines the layout of each item
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(),
countries, R.layout.item_lv_layout, from, to);
return adapter;
}
Robinhoods ответ исправил его для меня тоже. – Theo