【发布时间】:2014-03-21 10:37:44
【问题描述】:
我有一个 ListView,我在其中显示从 JSON 格式的 URL 获取的 ArrayList 中的项目。每个项目由 5 个元素组成。当单击另一个活动时,我想将与该特定列表项关联的元素传递给它。但是,当我将ArrayList 传递给其他活动并迭代ArrayList 时,无论我单击哪个列表项,都只会打开列表中的最后一项。
这是我的代码:
MainActivity.java
JSONArray jObject = new JSONArray(responseBody);
for (int i = 0; i < jObject.length(); i++) {
JSONObject menuObject = jObject.getJSONObject(i);
String title= menuObject.getString("Title");
String description= menuObject.getString("BodyText");
String thumbnail= menuObject.getString("ThumbnailPath");
String nUrl = menuObject.getString("Url");
String body = menuObject.getString("Body");
String nBigImage = menuObject.getString("ImageBlobUrls");
map = new HashMap<String,String>();
map.put(SOURCETITLE, title);
map.put(TITLE, description);
map.put(THUMBNAILPATH, thumbnail);
map.put(BODY, body);
map.put(URL, nUrl);
map.put(IMAGEBLOBURLS,nBigImage);
myList.add(map);
}
myListView.setAdapter(itemsAdapter);
myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
{
// TODO Auto-generated method stub
Intent nIntent = new Intent(Home.this,NDetails.class);
nIntent.putExtra("myItems", myList);
startActivity(nIntent);
}
});
NDetails.java
Intent in = getIntent();
data = (ArrayList<HashMap<String, String>>) in.getSerializableExtra("myItems");
for(Map<String, String> newItem:data)
{
newUrl = newItem.get(Home.URL);
newTitle =newItem.get(Home.SOURCETITLE);
newBody= newItem.get(Home.BODY);
newImage = newItem.get(Home.THUMBNAILPATH);
}
txtNewsTitle.setText(newTitle);
txtNewsBody.setText(newBody);
我该如何解决这个问题? 谢谢
【问题讨论】:
标签: java android listview arraylist