我无法理解这一点,我可以设法点击列表视图的哪个行号。但我无法弄清楚如何将所选列表行的文本放入变量中。我只需要移动到特定于所选列表行的内容。任何帮助或方向都会很棒,谢谢!
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// adding HashList to ArrayList
songsList.add(map);
}
list=(ListView)rootView.findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(getActivity(), songsList); ;
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
String TEST = arg0.getItemAtPosition(position).toString();
Toast.makeText(getActivity(), TEST, Toast.LENGTH_SHORT).show();
}
});
return rootView;
}
}
答案 0 :(得分:0)
onItemClick()中的第三个参数是position
将此position
用于与ListView关联的ListAdapter中的.getItem()
。
然后,您可以按正常方式从该项目中获取文本。
<强> <Additional>
强>
要获取与ListView相关联的ListAdapter,您将使用arg0.getAdapter()
。因此,完整的方法调用变为arg0.getAdapter().getItem(position)
。
但正如ρяσѕρєяK指出的那样,你使用名为songList的ArrayList定义了ListAdapter。
您定义的songList是HashMaps的ArrayList
因此,当您调用arg0.getAdapter().getItem(position)
时,将返回的是位于ArrayList中名为songList的那个位置的HashMap。
由于HashMap是将要返回的内容,因此您应该编写如下内容:
HashMap selectedItemHashMap = (HashMap)arg0.getAdapter().getItem(position);
然后,您可以使用以下命令从HashMap检索相关数据:
selectedItemHashMap.get(...//The relevant key for the data you want to get out of the HashMap...)
答案 1 :(得分:0)
因为您将ArrayList
的{{1}}传递给HaspMap
,所以LazyAdapter
会在所选行的位置返回getItemAtPosition
而不是HaspMap
}。将选择行元素设置为:
String