user3675515
user3675515

Reputation: 165

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 ? .

Upvotes: 0

Views: 77

Answers (1)

scottD
scottD

Reputation: 135

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.

Upvotes: 1

Related Questions