我有一個ArticlesAdapter,我正在使用它來讀取遠程JSON數據。適配器正在工作,但我努力讓我的ListView setonitemclicklister工作。Android setonitemclicklistener實現
我想要完成的是能夠點擊ListItem並獲得點擊選項的文章數據。 我有我的文章類中的getName()函數,我需要調用以響應ListItem點擊,但我似乎無法找到一種方法來實現它。
我想在我的AsyncTask類中做到這一點。
使用下面的代碼:
protected void onPostExecute(JSONArray result) {
// TODO Auto-generated method stub
Log.i("CHECK", "RESULTS: " + result);
List<Article> articles = new ArrayList<Article>();
String title = null;
String nid = null;
try{
for(int i=0; i < data.length(); i++){
JSONObject dataObj = (JSONObject)data.get(i);
JSONObject record = dataObj.getJSONObject("node");
title = (record.getString("title"));
nid = (record.getString("nid"));
Log.i("FOUND", "title: " + title);
Log.i("FOUND", "nid: " + nid);
articles.add(new Article(title, "", Integer.parseInt(nid)));
}
}catch(JSONException j){
Log.e("CHECK", "Attempting to read data returned from JSONReader: " + j.toString());
}
ListView articlesList = (ListView)findViewById(R.id.articlesList);
ArticleAdapter adapter = new ArticleAdapter(ArticlesActivity.this, R.layout.article_item, articles);
articlesList.setAdapter(adapter);
articlesList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "testing : ", Toast.LENGTH_LONG);
Log.i("CHECK", "AdapterView: " + parent);
Log.i("CHECK", "VIEW : " + view);
Log.i("CHECK", "POSITION : " + position);
Log.i("CHECK", "ID : " + id);
}
});
if(dialog.isShowing())
dialog.dismiss();
}
我的問題是我不知道如何讓setOnItemClickListener工作。 我能夠通過日誌功能打印參數:
Log.i("CHECK", "AdapterView: " + parent);
Log.i("CHECK", "VIEW : " + view);
Log.i("CHECK", "POSITION : " + position);
Log.i("CHECK", "ID : " + id);
...但我得到的錯誤,當我嘗試鑄造任何參數爲文章對象,以便我可以調用它的getName()函數等。
我對你的問題有點困惑,你究竟在你的OnItemClickListener中完成了什麼? – 2013-02-19 23:46:19
我更新了我的問題 – sisko 2013-02-19 23:55:16
然後Sam的回答對你正在努力完成的事情是正確的。 – 2013-02-20 00:01:08