2014-02-11 2 views
0

Привет всем им с такого рода ошибки в моем коде:метод положил (String, List <String>) не применяется

Метод поставил (String, List) в типа HashMap> не применяется для аргументов (String, List>)

Мой код здесь: получение ошибки

private void prepareListData() { 


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

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

    // Adding child data 
    List<HashMap<String, String>> listUnderVRP = new ArrayList<HashMap<String, String>>(); 
    //List<String> listUnderVRP = 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_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); 

     // adding HashList to ArrayList 
     listUnderVRP.add(map); 

    } 


    listDataChild.put(listDataHeader.get(0), listUnderVRP); // Header, Child data 
    //listDataChild.put(listDataHeader.get(1), nowShowing); 
    //listDataChild.put(listDataHeader.get(2), comingSoon); 
} 

им на функцию пут.

heres вся логика моего кода, у меня проблемы с интеграцией моих xml-файлов в мой список. поток выглядит так: у меня есть ящик для навигации внутри него, у меня есть расширяемый список, внутри расширяемого списка у меня есть список, который я получаю на моем XML-api для отображения в списке view.ive работает в течение 3 дней, но не повезло ,

public class HomeActivity extends Activity { 

static final String URL = "http://api.test.info/test/test.xml"; 
// XML node keys 
static final String KEY_SONG = "elements"; // parent node 
static final String KEY_ID = "id"; 
public static final String KEY_TITLE = "title"; 
public static final String KEY_THUMB_URL = "thumb_url"; 

ExpandableListAdapter listAdapter; 
ExpandableListView expListView; 

public DrawerLayout drawer; 
ImageView navDrawerBtn; 

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

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home); 

    if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 


    navDrawerBtn = (ImageView)findViewById(R.id.headerDrawer); 
    expListView = (ExpandableListView) findViewById(R.id.lvExp); 

    if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { 
     expListView.setIndicatorBounds(402,465);  
    } else {   
     expListView.setIndicatorBoundsRelative(402,465);  
    } 

    drawer = (DrawerLayout)findViewById(R.id.drawer_layout); 

    prepareListData(); 



    navDrawerBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      if(!drawer.isDrawerOpen(expListView)) { 
       drawer.openDrawer(expListView); 
       } else { 
        drawer.closeDrawer(expListView); 
       } 

      } 
     }); 


    listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); 

    // setting list adapter 
    expListView.setAdapter(listAdapter); 

    // Listview Group click listener 
    expListView.setOnGroupClickListener(new OnGroupClickListener() { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, 
       int groupPosition, long id) { 
      // Toast.makeText(getApplicationContext(), 
      // "Group Clicked " + listDataHeader.get(groupPosition), 
      // Toast.LENGTH_SHORT).show(); 
      return false; 
     } 
    }); 

    // Listview Group expanded listener 
    expListView.setOnGroupExpandListener(new OnGroupExpandListener() { 

     @Override 
     public void onGroupExpand(int groupPosition) { 
      Toast.makeText(getApplicationContext(), 
        listDataHeader.get(groupPosition) + " Expanded", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    // Listview Group collasped listener 
    expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 

     @Override 
     public void onGroupCollapse(int groupPosition) { 
      Toast.makeText(getApplicationContext(), 
        listDataHeader.get(groupPosition) + " Collapsed", 
        Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    // Listview on child click listener 
    expListView.setOnChildClickListener(new OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(
        getApplicationContext(), 
        listDataHeader.get(groupPosition) 
          + " : " 
          + listDataChild.get(
            listDataHeader.get(groupPosition)).get(
            childPosition), Toast.LENGTH_SHORT) 
        .show(); 
      return false; 
     } 
    }); 
} 

/* 
* Preparing the list data 
*/ 
private void prepareListData() { 


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

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

    // Adding child data 
    List<HashMap<String, String>> listUnderVRP = new ArrayList<HashMap<String, String>>(); 
    //List<String> listUnderVRP = 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_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); 

     // adding HashList to ArrayList 
     listUnderVRP.add(map); 

    } 


    listDataChild.put(listDataHeader.get(0), listUnderVRP); // Header, Child data 
    //listDataChild.put(listDataHeader.get(1), nowShowing); 
    //listDataChild.put(listDataHeader.get(2), comingSoon); 
} 

public int GetPixelFromDips(float pixels) { 
     // Get the screen's density scale 
     final float scale = getResources().getDisplayMetrics().density; 
     // Convert the dps to pixels, based on density scale 
     return (int) (pixels * scale + 0.5f); 
    } 

}

+0

Какой тип 'parser.getValue()' return? – Bohemian

+0

привет @Bohemian, я обновил свой код, я добавил всю логику – user3243065

+0

Вы не разместили определение 'getValue()' - каков его тип возврата? – Bohemian

ответ

0

Вы построения HashMap как HashMap<String, String> а не HashMap<String, List<?>>.

HashMap<String, String> map = new HashMap<String, String>(); 

Предположительно парсер возвращает список какого-либо рода, и поэтому у вас есть ошибка типа.

+0

hi @Nick Palmer, я обновил свой код, добавил вся логика – user3243065

1

основной причиной является ваша listDataChild только позволяют List<String> типа, но ваш вклад парам (listUnderVRP) имеет List<HashMap<String, String>> так попробовать это:

заменить:

listDataChild = new HashMap<String, List<String>>(); 

по:

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

Я основываюсь на том, что вы поставляете, не уверен, что это подходит для вашей бизнес-логики.

+0

привет @Tien, я обновил свой код, я добавил всю логику – user3243065

0

Там слишком много кода, чтобы пробраться через, но на основе ваших комментариев:

Метод GET (INT) в списке Тип> не применяется для аргументов (String)

Будет вызвано попыткой позвонить get(i), где i - String, когда это должно быть int.

Метод пут (String, ArrayList>) не определено для типа ArrayList>

бы быть вызвано попыткой использовать метод put(K, V)Карта на Список, который имеет только метод add().

+0

да, я верю, что так, я пытаюсь исправить свой код, но все равно не повезло, им не знакомы с тем, как использовать эти типы, моя цель только для отображения моих данных в расширяемом списке из службы xml – user3243065

Смежные вопросы