2016-08-28 5 views
1

Ich möchte ViewHolder-Muster in ListView verwenden (ich weiß über RecyclerView, aber ich möchte es in ListView !!!).Android: convertView in ListView ist immer Null

Ich habe es erstellt, aber ich habe festgestellt, dass convertView in getView() immer Null ist. Jeder Aufruf getView(). Was mache ich falsch?

public class ScheduleListAdapter extends BaseAdapter { 
    private LayoutInflater lInflater; 
    private List<ScheduleSubject> scheduleListItems; 

    public ScheduleListAdapter(Context context, List<ScheduleSubject> scheduleListItems) { 
     this.scheduleListItems = scheduleListItems; 
     lInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return scheduleListItems.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return scheduleListItems.get(position); 
    } 

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

    private static class ViewHolder { 
     TextView name, place; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder; 
     if (convertView == null) { 
      convertView = lInflater.inflate(R.layout.schedule_item_show, parent, false); 
      viewHolder = new ViewHolder(); 
      viewHolder.name = (TextView) convertView.findViewById(R.id.schedule_item_name_textView); 
      viewHolder.place = (TextView) convertView.findViewById(R.id.schedule_item_place_textView); 
      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     ScheduleSubject scheduleListItem = getScheduleListItem(position); 
     viewHolder.number.setText(String.valueOf(scheduleListItem.getLessonNumber())); 
     viewHolder.name.setText(scheduleListItem.getName()); 
     viewHolder.place.setText(scheduleListItem.getPlace()); 

     return convertView; 
    } 

    public ScheduleSubject getScheduleListItem(int position) { 
     return ((ScheduleSubject) getItem(position)); 
    } 
} 
+0

Bitte logcat zu Ihrer Frage hinzufügen. – JoelFernandes

Antwort

0

Versuch ersetzt diese Zeile

ViewHolder viewHolder; 

mit dieser:

Holder viewHolder; 

und diese:

viewHolder = (ViewHolder) convertView.getTag(); 

mit dieser: