2017-01-13 4 views
0

Der folgende Code wiederholt das letzte Element 4 mal. Diese ListView wird in einem Aktivitätsfragment mit Registerkarten verwendet. Ich suchte im Internet, fand aber nichts hilfreiches. Bitte helfen Sie!Mein benutzerdefinierter Listview-Adapter wiederholt das letzte Element

Meine Adapterklasse:

public class MyAdapter extends ArrayAdapter<ElementList> { 
public MyAdapter(Context context, ArrayList<ElementList> EventList){ 
    super(context,0,EventList); 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent){ 


    ViewHolder holder; 

    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_adapter, parent, false); 

     holder = new ViewHolder(); 
     holder.id = (TextView) convertView.findViewById(R.id.textView9); 
     holder.name = (TextView) convertView.findViewById(R.id.textView6); 
     holder.date =(TextView)convertView.findViewById(R.id.textView7); 
     holder.time =(TextView)convertView.findViewById(R.id.textView8); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    ElementList elementList = getItem(position); 

    if(elementList != null) { 

     holder.id.setText(ElementList.id); 
     holder.name.setText(ElementList.name); 
     holder.date.setText(ElementList.date); 
     holder.time.setText(ElementList.time); 
    } 

    return convertView; 
} 

Verwendung des Listview:

ArrayList<ElementList> EventList = new ArrayList<ElementList>(); 
EventList.add(new ElementList("1","bla1","12/34/45","12:40")); 
        EventList.add(new ElementList("1","bla2","12/34/45","12:40")); 
        EventList.add(new ElementList("1","bla3","12/34/45","12:40")); 
        EventList.add(new ElementList("1","bla4","12/34/45","12:40")); 

       MyAdapter adapter = new MyAdapter(getActivity(),EventList); 
       ListView myList = (ListView) rootView.findViewById(R.id.listView); 
       myList.setAdapter(adapter); 

Irgendwelche Vorschläge? .

+0

Erläuterung des Problems –

+0

Können Sie notifyDataSetChanged() auf Ihrem Adapter aufrufen, nachdem Sie ihn auf der Liste gesetzt haben? – DNax

Antwort

0

Ich denke, das

if(elementList != null) { 

    holder.id.setText(ElementList.id); 
    holder.name.setText(ElementList.name); 
    holder.date.setText(ElementList.date); 
    holder.time.setText(ElementList.time); 
    } 

diese

if(elementList != null) { 

    holder.id.setText(elementList.id); 
    holder.name.setText(elementList.name); 
    holder.date.setText(elementList.date); 
    holder.time.setText(elementList.time); 
} 

Ich weiß nicht, aber wenn dies dazu beitragen wird, sein sollte. Sie können einige Protokollanweisungen hinzufügen, um zu sehen, was sich tatsächlich in Ihrer ArrayList befindet, direkt nachdem Sie sie gefüllt haben und wenn der Adapter bereit ist, daraus zu lesen.

+0

Danke für die Antwort, aber es hilft nicht. – user3675515

Verwandte Themen