2013-05-11 3 views
0

je me suis le fragment suivantdéveloppement Android: Custom ListAdapter dans Fragment

public static class DummySectionFragment extends Fragment { 

    ListView msgList; 
    ArrayList<StundenplanDetail> details; 
    AdapterView.AdapterContextMenuInfo info; 

    public void addVertretung (String Fach, String Raum, String Farbe) { 
     StundenplanDetail Detail; 
     Detail = new StundenplanDetail(); 
     Detail.setFach(Fach); 
     Detail.setRaum(Raum); 
     Detail.setFarbe(Farbe); 
     details.add(Detail); 
    } 



    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 

    XMLParser parser = new XMLParser(); 
    String xml = null; 

    public static final String ARG_SECTION_NUMBER = "section_number"; 

    public void loadArray (String dayArray) { 

    } 

    public DummySectionFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     try{ 
      byte[] inputBuffer = new byte[20000]; 
      File inputFile = new File("sdcard/Android/data/com.approfi.woehlerschule/data.woehler"); 
      FileInputStream fileInputStream = new FileInputStream(inputFile); 
      fileInputStream.read(inputBuffer); 
      xml = new String(inputBuffer); 
      fileInputStream.close(); 
      }catch(IOException e){ 
       Log.d("Fehler:", e.toString()); 
      } 


     View rootView = inflater.inflate(
       R.layout.fragment_stundenplan_dummy, container, false); 


      if(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)).equals("1")){ 
       int splitpos1 = xml.indexOf("<Montag>"); 
       int splitpos2 = xml.indexOf("</Montag>") + 9; 

       String xml2 = xml.substring(splitpos1, splitpos2); 
       org.w3c.dom.Document doc = parser.getDomElement(xml2); 
       NodeList nl = doc.getElementsByTagName("Stunde"); 


       for (int i = 0; i < nl.getLength(); i++) { 
        Element e = (Element)nl.item(i); 
        String Fach = parser.getValue(e, "Fach"); // name child value 
        String Raum = parser.getValue(e, "Raum"); // cost child value 
        String Farbe = parser.getValue(e, "Farbe"); // description child value 
        Log.d("Fail:", Fach + Raum + Farbe); 
       } 
      } 



      /*if(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)).equals("2")){ 
       ListView listViewStundenplan = (ListView) rootView.findViewById(R.id.listViewStundenplan); 
       ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_stundenplan, dienstagArray); 
       listViewStundenplan.setAdapter(arrayAdapter); 
       } 


      if(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)).equals("3")){ 
       ListView listViewStundenplan = (ListView) rootView.findViewById(R.id.listViewStundenplan); 
       ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_stundenplan, mittwochArray); 
       listViewStundenplan.setAdapter(arrayAdapter); 
       } 


      if(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)).equals("4")){ 
       ListView listViewStundenplan = (ListView) rootView.findViewById(R.id.listViewStundenplan); 
       ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_stundenplan, donnerstagArray); 
       listViewStundenplan.setAdapter(arrayAdapter); 
       } 


      if(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)).equals("5")){ 
       ListView listViewStundenplan = (ListView) rootView.findViewById(R.id.listViewStundenplan); 
       ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_stundenplan, freitagArray); 
       listViewStundenplan.setAdapter(arrayAdapter); 
       } 
      */ 


      msgList = (ListView) rootView.findViewById(R.id.listViewStundenplan); 

      msgList.setAdapter(new StundenplanAdapter(details, this)); 


     return rootView; 
    } 
} 

Et Adaptateur pour ma liste Voir

public class StundenplanAdapter extends BaseAdapter { 

private ArrayList<StundenplanDetail> _data; 
Context _c; 

StundenplanAdapter (ArrayList<StundenplanDetail> data, Context c){ 
    _data = data; 
    _c = c; 
} 

public int getCount() { 
    return _data.size(); 
} 

public Object getItem(int position) { 
    return _data.get(position); 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) 
    { 
     LayoutInflater vi = (LayoutInflater)_c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.list_item_stundenplan, null); 
    } 

     TextView fachText = (TextView)v.findViewById(R.id.textViewStundenplanFach); 
     TextView raumText = (TextView)v.findViewById(R.id.textViewStundenplanRaum); 
     View colorBlock = (View)v.findViewById(R.id.colorBlockStundenplan); 

     StundenplanDetail msg = _data.get(position); 
     fachText.setText(msg.fach); 
     raumText.setText(msg.raum); 
     colorBlock.setBackgroundColor(37000000);; 

    return v; 
    } 

} 

Maintenant, le problème est, cette éclipse me dit que The constructor StundenplanAdapter(ArrayList<StundenplanDetail>, Stundenplan.DummySectionFragment) is undefined mais je veux pour utiliser mon adaptateur personnalisé . Tout fonctionne. Le List View dans mon Fragment et Custom adapter mais pas si je veux utiliser l'adaptateur personnalisé dans mon fragment listview

J'espère que vous pouvez me aider grâce à l'avance, MoBr114

Répondre

1

Envoyer votre contexte FragmentActivity à votre Adaptateur pas Fragment lui-même!

Essayez:

msgList.setAdapter(new StundenplanAdapter(details, getActivity())); 
+0

cela ne fonctionne pas. Je reçois une exception NullPointerException. – MoBr114

+0

Mais merci pour votre aide – MoBr114

0

Vous passez le mauvais argument de l'adaptateur dans msgList.setAdapter(). Il cherche le contexte du Activity non l'instance de la classe DummySectionFragment.

+0

Alors, que puis-je faire? – MoBr114