1

ListViewを拡張するCustomAdapterを使用して作成したいと思いますBaseAdapter。私は持っていCustomAdapter(Context context, List<Map<String, String>> dataList)ます。

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;
}

}

4

2 に答える 2

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;
}
于 2013-01-07T16:09:34.587 に答える
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;
}
于 2013-01-07T16:15:17.703 に答える