Android 将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(

我无法理解这一点,我可以设法获得单击了listview的哪个行号。但我不知道如何将所选列表行的文本放入变量中。我需要这样做只是为了转到特定于所选列表行的内容。任何帮助或指导都会很好,谢谢

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;