简体   繁体   中英

My custom listview adapter repeats the last item

The code below repeats the last element 4 times. This ListView is used in a tabbed activity fragment. I searched on the internet but found nothing helpful. Please help!

My adapter class:

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;
}

Usage of that 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);

Any suggestions ? .

I think this

    if(elementList != null) {

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

should be this

    if(elementList != null) {

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

I don't know if this will help, though. You can add in some log statements to see what's actually in your arrayList right after you populate it as well as when the adapter is getting ready to read from it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM