Reputation: 165
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
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