Проблема ListView - как поместить изображения из прорисовки в listView - PullRequest
1 голос
/ 17 августа 2011

Я использую веб-сервис для получения данных о местах, которые мне нужны.В listView мне нужно показать изображение, название места, изображение для типа места и адрес.Я использую простой адаптер.Я знаю, как заполнить текст, но не знаю, как поместить изображения из папки Drawable.Первые изображения будут идти в некотором порядке (например, изображение A, второе изображение B, третье изображение C), а второе изображение будет зависеть от типа места (если место - пекарня, а изображение - хлеб) и чего-то подобного.Я перенаправил в SimpleAdapter ArrayList из HashMaps ... Кто-нибудь может дать мне какую-нибудь идею или какой-нибудь код ???

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Думаю, этот пример поможет вам.

// Основной класс

import android.app.Activity;
import android.os.Bundle;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Alertslistview extends Activity 
{

private static class EfficientAdapter extends BaseAdapter 
{
    private LayoutInflater mInflater;

    public EfficientAdapter(Context context) 
    {
    mInflater = LayoutInflater.from(context);
    }

    public int getCount() 
    {
    return alerts.length;
    }

    public Object getItem(int position)
    {
    return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) 
    {
    ViewHolder holder;
    if (convertView == null) 
    {
        convertView = mInflater.inflate(R.layout.alertslist, null);
        holder = new ViewHolder();
        holder.img =(ImageView) convertView.findViewById(R.id.img);
        holder.text2 = (TextView) convertView.findViewById(R.id.TextView02);

        convertView.setTag(holder);
    } 
    else 
    {
        holder = (ViewHolder) convertView.getTag();
    }

        holder.img.setImageResource(imgid[position]);
        holder.text2.setText(alerts[position]);

        return convertView;
    }

    static class ViewHolder
    {
        ImageView img;
        TextView text2;
    }}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ListView l1 = (ListView) findViewById(R.id.ListView01);
    l1.setAdapter(new EfficientAdapter(this));      }

private static final String[] alerts= {"Service Request EBH123H has been reassigned to Mohammed","Appointment Request for May 29th declined","New Survey - Metro Rail Survey available on your device"};

static final Integer[] imgid = {R.drawable.alert,R.drawable.alert,R.drawable.alert};
}
0 голосов
/ 17 августа 2011

Вы должны создать класс, расширяемый из BaseAdapter, и поместить код в метод getview следующим образом:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v;
    if (convertView == null) {
        LayoutInflater li = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = li.inflate(R.layout.imagelayout, null);
        ImageView iv = (ImageView) v.findViewById(R.id.icon_image);
        iv.setImageResource(icons[position]);
    } else {
        v = convertView;
    }
    return v;
}

До этого создайте ImageLayout.xml, содержащий ImageView, и после этого адаптируйте ваш список с этим классом.

Извините за мой плохой английский!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...