2013-01-07 135 views
1

我想使用扩展BaseAdapter的CustomAdapter创建ListView。我有CustomAdapter(Context context, List<Map<String, String>> dataList)Android:使用CustomAdapter填充ListView

如何从Map获取数据并在getView()方法中设置我的视图?在我尝试使用SimpleAdapter之前,我需要设置存储在SD上的位图,以及存储在地图中的图像的路径。每一个帮助表示赞赏。

这里是我的CustomAdapter来源:

public class CustomAdapter extends BaseAdapter { 

private Context context; 
private String pricePrecision = null; 
private List<Map<String, String>> data; 

public CustomAdapter(Context context, List<Map<String, String>> data) { 
    super(); 
    this.context = context; 
    this.data = data; 
} 

@Override 
public int getCount() { 
    return (data == null) ? 0 : data.size(); 
} 

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

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder viewHolder = null; 
    LayoutInflater inflater = ((LayoutInflater) context 
      .getSystemService(Context.LOCATION_SERVICE)); 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.order_list_item, null); 

     viewHolder = new ViewHolder(); 
     viewHolder.itemThumbnail = ((ImageView) convertView 
       .findViewById(R.id.ivItemThumb)); 
     viewHolder.itemName = ((TextView) convertView 
       .findViewById(R.id.tvItemName)); 
     viewHolder.itemPrice = ((TextView) convertView 
       .findViewById(R.id.tvItemPrice)); 
     convertView.setTag(viewHolder); 

    } else { 
     viewHolder = ((ViewHolder) convertView.getTag()); 
    } 
    return null; 
} 

private class ViewHolder { 
    private ImageView itemThumbnail; 
    private TextView itemName; 
    private TextView itemPrice; 
} 

}

+0

post CustomAdapter代码 –

+0

我编辑了我的问题。有我的来源。 – Martin

+0

只是想确认你有地图或位图中的图像路径? –

回答

2

更改getView方法:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder viewHolder = null; 
    LayoutInflater inflater = ((LayoutInflater) context 
      .getSystemService(Context.LOCATION_SERVICE)); 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.order_list_item, null); 

     viewHolder = new ViewHolder(); 
     viewHolder.itemThumbnail = ((ImageView) convertView 
       .findViewById(R.id.ivItemThumb)); 
     viewHolder.itemName = ((TextView) convertView 
       .findViewById(R.id.tvItemName)); 
     viewHolder.itemPrice = ((TextView) convertView 
       .findViewById(R.id.tvItemPrice)); 
     convertView.setTag(viewHolder); 

    } else { 
     viewHolder = ((ViewHolder) convertView.getTag()); 
    } 
    viewHolder.itemThumbnail.setImageBitmap(data.get(position).get("thumbnail")); 
    viewHolder.itemName.setText(data.get(position).get("name")); 
    viewHolder.itemPrice.setText(""+data.get(position).get("price")); 
    return viewHolder; 
} 

private class ViewHolder { 
    private ImageView itemThumbnail; 
    private TextView itemName; 
    private TextView itemPrice; 
} 
+0

谢谢四位帮忙。这非常有用。你真的帮助了我。 – Martin

0

有点除(ρяσѕρєяK)的代码。 您可能想要在缩略图上设置侦听器。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder viewHolder = null; 
    LayoutInflater inflater = ((LayoutInflater) context 
      .getSystemService(Context.LOCATION_SERVICE)); 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.order_list_item, null); 

     viewHolder = new ViewHolder(); 
     viewHolder.itemThumbnail = ((ImageView) convertView 
       .findViewById(R.id.ivItemThumb)); 
     viewHolder.itemName = ((TextView) convertView 
       .findViewById(R.id.tvItemName)); 
     viewHolder.itemPrice = ((TextView) convertView 
       .findViewById(R.id.tvItemPrice)); 

     viewHolder.itemThumbnail.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

      } 
     }); 

     convertView.setTag(viewHolder); 

    } else { 
     viewHolder = ((ViewHolder) convertView.getTag()); 
    } 
    viewHolder.itemThumbnail.setImageBitmap(data.get(position).get(
      "thumbnail")); 
    viewHolder.itemName.setText(data.get(position).get("name")); 
    viewHolder.itemPrice.setText("" + data.get(position).get("price")); 
    return viewHolder; 
} 

private class ViewHolder { 
    private ImageView itemThumbnail; 
    private TextView itemName; 
    private TextView itemPrice; 
}