Android 从ListAdapter更改图像
我想使用ListAdapter调用res/drawable文件夹中的图像 到目前为止,我只能检索和显示文本形式的信息 我的适配器如下所示Android 从ListAdapter更改图像,android,listview,Android,Listview,我想使用ListAdapter调用res/drawable文件夹中的图像 到目前为止,我只能检索和显示文本形式的信息 我的适配器如下所示 runOnUiThread(new Runnable() { public void run() { /** * Updating parsed JSON data into ListView * */
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
ListagemHospitaisActivity.this, ListaHospitais,
R.layout.item_hospital, new String[] { TAG_PID,
TAG_NOME, TAG_LOTACAO},
new int[] { R.id.pid, R.id.nome, R.id.lotacao });
// updating listview
setListAdapter(adapter);
}
});
TAG_LOTACAO返回我想要显示的图像的确切名称
我想改变的ImageView是这样的
<ImageView
android:id="@+id/imglotacao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/l_9_1"
/>
您应该创建自己的自定义适配器,如下所示:
public class HospitaisAdapter extends BaseAdapter {
private List<Hospitais> ListaHospitais; // or what type this list is
private Context context;
private LayoutInflater layoutInflater;
public HospitaisAdapter (Context context, List<Hospitais> ListaHospitais) {
this.ListaHospitais= ListaHospitais;
this.context=context;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return ListaHospitais.size();
}
@Override
public Object getItem(int position) {
return ListaHospitais.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_row, null);
/*the row layout should be the layout for a row from your listview,
containing your imageView and nome as well as pid data.
I will suppose pid and nome are Strings and are displayed in a TextView */
holder = new ViewHolder();
holder.pid= (TextView) convertView.findViewById(R.id.pid);
holder.nome= (TextView) convertView.findViewById(R.id.nome);
holder.image= (ImageView) convertView.findViewById(R.id.imglotacao);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Hospitais item = (Hospitais) ListaHospitais.get(position);
holder.pid.setText(item.getPid());
holder.nome.setText(item.getNome());
holder.image.setImageDrawable(context.getResources().getDrawable(R.drawable.image_name));
return convertView;
}
static class ViewHolder {
TextView pid;
TextView nome;
ImageView image;
}
}
listView.setAdapter(new HospitaisAdapter(this,ListaHospitais));
希望这有帮助。可能重复的抱歉,应该删除另一个。我想这一条更清楚。谢谢你@HaneloreIanoseck。。。我会试试这个,我会让你知道的。我尝试了你的解决方案,但出现了一些错误。我已经用问题编辑了我的问题,这样可以更好地格式化。你应该用ListaHospitais替换listData。我编辑了我的答案。至于列表ListaHospitais,我只是假设类型是这个列表的列表。当然,如果Hospitais类型不存在,它会说您需要创建这个类。您需要将ListaHospitais的类型替换为您在初始代码中使用的类型。
public class HospitaisAdapter extends BaseAdapter {
private List<Hospitais> ListaHospitais; // or what type this list is
private Context context;
private LayoutInflater layoutInflater;
public HospitaisAdapter (Context context, List<Hospitais> ListaHospitais) {
this.ListaHospitais= ListaHospitais;
this.context=context;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return ListaHospitais.size();
}
@Override
public Object getItem(int position) {
return ListaHospitais.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_row, null);
/*the row layout should be the layout for a row from your listview,
containing your imageView and nome as well as pid data.
I will suppose pid and nome are Strings and are displayed in a TextView */
holder = new ViewHolder();
holder.pid= (TextView) convertView.findViewById(R.id.pid);
holder.nome= (TextView) convertView.findViewById(R.id.nome);
holder.image= (ImageView) convertView.findViewById(R.id.imglotacao);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Hospitais item = (Hospitais) ListaHospitais.get(position);
holder.pid.setText(item.getPid());
holder.nome.setText(item.getNome());
holder.image.setImageDrawable(context.getResources().getDrawable(R.drawable.image_name));
return convertView;
}
static class ViewHolder {
TextView pid;
TextView nome;
ImageView image;
}
}
listView.setAdapter(new HospitaisAdapter(this,ListaHospitais));