2016-10-06 4 views
1
public class ListViewAdapter extends BaseAdapter { 
private Context context; 
private LocationDetails[] locationDetails; 

public ListViewAdapter(Context c, LocationDetails[] locationDetails) { 
    context = c; 
    this.locationDetails = locationDetails; 

} 

@Override 
public int getCount() { 
    return locationDetails.length; 
} 

@Override 
public Object getItem(int i) { 
    return null; 
} 

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

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    View list; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (view == null) { 
     list = new View(context); 
     list = inflater.inflate(R.layout.listview_layout, null); 
     TextView name = (TextView) list.findViewById(R.id.location_name); 
     TextView desc = (TextView) list.findViewById(R.id.location_desc); 
     ImageView img = (ImageView) list.findViewById(R.id.location_image); 

     name.setText(locationDetails[i].getLocationName()); 
     desc.setText(locationDetails[i].getLocationDesc()); 
     img.setImageResource(locationDetails[i].getLocationIcon()); 
    } else { 
     list = (View) view; 
    } 

    return list; 
} 
} 

Этот код является кодом, прежде чем я использую viewholder, он отлично работает. Затем я попытался изменить его с помощью зрителя и скомпилировать его с помощью градиента, все изображения и текстовые изображения исчезли, я не знаю, что не так с приведенным ниже кодом. Почему я не могу показать что-либо на экране?ViewHolder не работает

public class LocationAdapter extends BaseAdapter { 
private Context context; 
private LocationDetails[] locationDetails; 

public LocationAdapter(Context c, LocationDetails[] locationDetails) { 
    context = c; 
    this.locationDetails = locationDetails; 

} 

@Override 
public int getCount() { 
    return locationDetails.length; 
} 

@Override 
public Object getItem(int i) { 
    return null; 
} 

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

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    View list = view; 
    ViewHolder vh; 


    if (list == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     list = inflater.inflate(R.layout.listview_layout, null); 

     vh = new ViewHolder(); 

     vh.name = (TextView) list.findViewById(R.id.location_name); 
     vh.desc = (TextView) list.findViewById(R.id.location_desc); 
     vh.img = (ImageView) list.findViewById(R.id.location_image); 

     list.setTag(vh); 
    } else { 
     vh = (ViewHolder) list.getTag(); 
    } 

    return list; 
} 

static class ViewHolder { 
    TextView name; 
    TextView desc; 
    ImageView img; 
} 
} 

ответ

1
public class LocationAdapter extends BaseAdapter { 
private Context context; 
private LocationDetails[] locationDetails; 
Object model; 

public LocationAdapter(Context c, LocationDetails[] locationDetails) { 
    context = c; 
    this.locationDetails = locationDetails; 

} 

@Override 
public int getCount() { 
    return locationDetails.length; 
} 

@Override 
public Object getItem(int i) { 
    return i; 
} 

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

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    View list = view; 
    ViewHolder vh; 


    if (list == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     list = inflater.inflate(R.layout.listview_layout, null); 

     vh = new ViewHolder(); 

     vh.name = (TextView) list.findViewById(R.id.location_name); 
     vh.desc = (TextView) list.findViewById(R.id.location_desc); 
     vh.img = (ImageView) list.findViewById(R.id.location_image); 

     list.setTag(vh); 
    } else { 
     vh = (ViewHolder) list.getTag(); 
    } 
    model = getItem(i); 

    vh.name.setText(model.getLocationName()); 
    vh.desc.setText(model.getLocationDesc()); 
    // same as image... 

    return list; 
} 

static class ViewHolder { 
    TextView name; 
    TextView desc; 
    ImageView img; 
} 
} 
+2

не писать только код добавить объяснение к ответу. – Ironman

Смежные вопросы