Android 将ListView行文本放入变量
我无法理解这一点,我可以设法获得单击了listview的哪个行号。但我不知道如何将所选列表行的文本放入变量中。我需要这样做只是为了转到特定于所选列表行的内容。任何帮助或指导都会很好,谢谢Android 将ListView行文本放入变量,android,string,listview,variables,onitemclicklistener,Android,String,Listview,Variables,Onitemclicklistener,我无法理解这一点,我可以设法获得单击了listview的哪个行号。但我不知道如何将所选列表行的文本放入变量中。我需要这样做只是为了转到特定于所选列表行的内容。任何帮助或指导都会很好,谢谢 ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); XMLParser parser = new XMLParser(
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;
}
}
McClick中的第三个参数是位置。 使用此位置从与ListView关联的ListAdapter中删除.getItem。 然后,您可以以正常方式从该项中获取文本 要获取与ListView关联的ListAdapter,可以使用arg0.getAdapter。因此,完整方法调用变为arg0.getAdapter.getItemposition 但是正如ρѕρєK所指出的,您使用名为songList的ArrayList定义了ListAdapter。 您定义的songList是HashMaps的ArrayList。 因此,当调用arg0.getAdapter.getItemposition时,将返回位于名为songList的ArrayList中该位置的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...)
因为您正在将HaspMap的ArrayList传递给LazyAdapter,所以getItemAtPosition将在所选行的位置而不是字符串处返回HaspMap。将“选择行元素”设置为:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
HashMap<String, String> selected_row =(HashMap<String, String>)
list.getItemAtPosition(position);
String str_title=selected_row.get(KEY_TITLE);
String str_artist=selected_row.get(KEY_ARTIST);
//....
}
谢谢,但是我现在在你给我的第92行hashmap中发现了以下错误:12-13 07:43:29.645:E/AndroidRuntime654:FATAL异常:main 12-13 07:43:29.645:E/AndroidRuntime654:java.lang.ClassCastException:java.lang.Integer无法转换为java.util.hashmap谢谢你的帮助,我还是会想到12-13 07:43:29.645:E/AndroidRuntime654:FATAL EXCEPTION:main 12-13 07:43:29.645:E/AndroidRuntime654:java.lang.ClassCastException:java.lang.Integer不能转换为java.util.HashMap有什么想法吗?请在问题的底部添加新的代码修订版本和完整的LogCat输出,帮助澄清发生了什么。没关系,我知道了,我不知道为什么我没有早点做。感谢您提供的帮助字符串name=TextView view.findviewbydr.id.title.getText.toString;