Android 在类型ArrayList中添加(字符串)的方法<;字符串>;不适用于参数(HashMap<;String,String>;)

Android 在类型ArrayList中添加(字符串)的方法<;字符串>;不适用于参数(HashMap<;String,String>;),android,Android,如何修复此错误类型ArrayList中的方法add(String)不适用于参数(HashMap) 我正在尝试将androidhive.com xml解析放在应用程序的自定义listview上 这是我的密码: private void prepareListData() { //ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>

如何修复此错误类型ArrayList中的方法add(String)不适用于参数(HashMap)

我正在尝试将androidhive.com xml解析放在应用程序的自定义listview上

这是我的密码:

private void prepareListData() {


    //ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
    ArrayList<String> songsList = new ArrayList<String>();


    com.test.utilities.XMLParser parser = new com.test.utilities.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);
    }

    listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, ArrayList<String>>();

    // Adding child data
    listDataHeader.add("VRP Medical Bay");
    //listDataHeader.add("");
    //listDataHeader.add("");

    // Adding child data

    ArrayList<String> listUnderVRP = new ArrayList<String>();

    //listUnderVRP.add("eDataClinical");
    //listUnderVRP.add("Schedule");
    //listUnderVRP.add("Dictate");
    //listUnderVRP.add("View Messages");
    //listUnderVRP.add("Reports for Signature");
    //listUnderVRP.add("View Billing");
    //listUnderVRP.add("View State");


    listDataChild.put(listDataHeader.get(0), songsList); // Header, Child data
    //listDataChild.put(listDataHeader.get(1), nowShowing);
    //listDataChild.put(listDataHeader.get(2), comingSoon);
}
private void prepareListData(){
//ArrayList songsList=新的ArrayList();
ArrayList songsList=新的ArrayList();
com.test.utilities.XMLParser parser=新建com.test.utilities.XMLParser();
字符串xml=parser.getXmlFromUrl(URL);//从URL获取xml
Document doc=parser.getDomeElement(xml);//获取DOM元素
NodeList nl=doc.getElementsByTagName(KEY_-SONG);
//循环通过所有歌曲节点
对于(int i=0;ivalue
put(KEY_ID,parser.getValue(e,KEY_ID));
put(KEY_TITLE,parser.getValue(e,KEY_TITLE));
put(KEY_-ARTIST,parser.getValue(e,KEY_-ARTIST));
put(KEY_DURATION,parser.getValue(e,KEY_DURATION));
put(KEY_THUMB_URL,parser.getValue(e,KEY_THUMB_URL));
//将哈希列表添加到ArrayList
歌曲列表。添加(地图);
}
listDataHeader=新的ArrayList();
listDataChild=newHashMap();
//添加子数据
listDataHeader.add(“VRP医疗舱”);
//listDataHeader.add(“”);
//listDataHeader.add(“”);
//添加子数据
ArrayList ListUnderwrp=新的ArrayList();
//添加(“eDataClinical”);
//增加清单(“附表”);
//增加(“口述”);
//添加(“查看消息”);
//添加列表(“供签署的报告”);
//添加列表(“查看账单”);
//添加(“视图状态”);
listDataChild.put(listDataHeader.get(0),songsList);//头,子数据
//listDataChild.put(listDataHeader.get(1),现在显示);
//listDataChild.put(listDataHeader.get(2),即将出现);
}

您的意思是声明
listDataChild=newhashmap()

作为


listDataChild=newhashmap()

我认为您应该这样定义您的ArrayList
ArrayList songsList=new ArrayList()
如果您可以发布stacktrace,这将有助于跟踪错误,这是很好的

如何修复此错误类型ArrayList中的方法add(String)不适用于参数(HashMap)

如果您想在歌曲列表
ArrayList
上调用
add(HashMap)
,显然,您应该将其命名为
ArrayList
。否则,
add
方法需要一个
String
(因为您当前的歌曲列表声明为
ArrayList

此外,如果您想调用
put
,将
放在您的列表datachild
HashMap
上,并将
String
作为键传递,将您的歌曲列表
ArrayList
作为值传递,则应将其声明为
HashMap

换言之:

private void prepareListData() {

   ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

   /* Same old code */

   /* 
    * Since listDataChild declared outside this method, do not forget to
    * replace the old declaration with 
    * HashMap<String, ArrayList<HashMap<String, String>>> listDataChild;
    */
   listDataChild = new HashMap<String, ArrayList<HashMap<String, String>>>();

   /* Same old code */
}
private void prepareListData(){
ArrayList songsList=新的ArrayList();
/*老代码*/
/* 
*由于listDataChild在该方法之外声明,请不要忘记
*将旧声明替换为
*HashMapListDataChild;
*/
listDataChild=newHashMap();
/*老代码*/
}

请注意注释。

要将贴图对象添加到ArrayList,您应该像下面那样定义ArrayList

ArrayList<HashMap<String, String>>> songsList  = new ArrayList<HashMap<String, String>>>;
songsList.add(map);
ArrayList>songsList=newarraylist>;
歌曲列表。添加(地图);

取消注释将数组列表声明为ArrayListGetting error的行时,您会收到什么错误消息;类型HashMap中的方法put(String,ArrayList)不适用于参数(String,ArrayList),我无法在此处发布图像,因为我仍然缺少点。我的目标是,我在里面有导航抽屉,我有可扩展的列表,我需要自定义我的列表视图,这就是为什么我遵循androidhive.com的自定义列表视图教程,我发现很难用expandalist应用程序在我的导航上实现它