Reputation: 1741
I'm using a web servis to get data for a places i need. In listView i need to show image, name of the Place, image for type of place and adress. I'm using Simple adapter. I know how to populate with the text, but dont know how to put images from folder drawable. First images will go in some order (like image A, second image B, third image C), and second image will depend of the type of a place (if the place is a bakery than image will be bread) and something like that. I forwarded to SimpleAdapter ArrayList of HashMaps... Can anybody give me some idea or some code???
Upvotes: 1
Views: 2892
Reputation: 36
I think this example would help you.
//Main Class
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};
}
Upvotes: 2
Reputation: 6270
You have to create a class extends from BaseAdapter and put code in getview method like this :
@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;
}
Before, create ImageLayout.xml containing a ImageView, and after that adapt your listview with this class.
Sorry for my bad english !
Upvotes: 0