0

J'essaie de créer un onglet en utilisant des fragments qui afficheront une liste d'entrées après l'analyse d'une page XML. Mais je suis incapable d'étendre listactivity int à la classe d'onglet car il étend déjà des fragments. J'ai essayé d'implémenter des listfragments mais il me donne une erreur sur ListAdapter adapter = new SimpleAdapter en disant "Le constructeur SimpleAdapter (Protab1, ArrayList>, int, String [], int []) est indéfini ". Pourriez-vous m'aider s'il vous plaît.Classe extension fragment et listview

package com.example.pro1; 
import java.util.ArrayList; 
import java.util.HashMap; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 

import android.annotation.TargetApi; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListAdapter; 
import android.widget.SimpleAdapter; 

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
public class Protab1 extends ListFragment { 
    // All static variables 
     static final String URL = "http://api.androidhive.info/pizza/?format=xml"; 
     // XML node keys 
     static final String KEY_ITEM = "item"; // parent node 
     static final String KEY_ID = "id"; 
     static final String KEY_NAME = "name"; 
     static final String KEY_COST = "cost"; 
     static final String KEY_DESC = "description"; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     return inflater.inflate(R.layout.protab1, container, false); 
     ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>(); 

     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(URL); // getting XML 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nl = doc.getElementsByTagName(KEY_ITEM); 
     // looping through all item nodes <item> 
     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_NAME, parser.getValue(e, KEY_NAME)); 
      map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST)); 
      map.put(KEY_DESC, parser.getValue(e, KEY_DESC)); 

      // adding HashList to ArrayList 
      menuItems.add(map); 
     } 

     // Adding menuItems to ListView 
     ListAdapter adapter = new SimpleAdapter(this, menuItems, 
       R.layout.list_item, 
       new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] { 
         R.id.name, R.id.desciption, R.id.cost }); 

     setListAdapter(adapter); 

     } 

} 
+0

Salut, tout le monde peut m'aider s'il vous plaît à ce sujet. Je suis nouveau à android. – Vyshakh

Répondre

1

Essayez d'utiliser this.getActivity() au lieu de this comme premier paramètre du SimpleAdapter. Le premier paramètre prend un objet Context, mais comme un ListFragment (ou un Fragment) ne prolonge pas le contexte, il ne fonctionnera pas.

+0

Salut Nick, Merci beaucoup. Cela a aidé. – Vyshakh

Questions connexes