[英]How to set Adapter for listview with image in Android
我必须单击一个按钮以显示具有图像的ListView。 不幸的是,当我单击按钮时,应用程序停止了。 我也设置了自定义适配器,但仍然相同。 这是代码:
public class R1 extends Activity {
String[] signTitle;
String[] signDescription;
int images[]={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,R.drawable. f,R.drawable.g,R.drawable.h};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.r1);
Resources res = getResources();
signTitle = res.getStringArray(R.array.titile);
signDescription = res.getStringArray(R.array.description);
ListView lv = (ListView) findViewById(R.id.listView);
Customlistadapter adapter = new Customlistadapter(this,signTitle,images,signDescription);
lv.setAdapter(adapter);}
customAdpater.java
public class Customlistadapter extends ArrayAdapter<String> {
Context context;
int[] images;
String[] titleArray;
String[] descriptionArray;
public Customlistadapter(Context c, String[] title, int imgs[],String[] desc) {
super(c, R.layout.activity_show,R.id.textView1,title);
this.context = c;
this.images = imgs;
this.titleArray = title;
this.descriptionArray = desc;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.activity_show, parent,false);
ImageView myImage = (ImageView) row.findViewById(R.id.image);
TextView myTitle = (TextView) row.findViewById(R.id.textView1);
TextView myDescription = (TextView) row.findViewById(R.id.textView2);
myImage.setImageResource(images[position]);
myTitle.setText(titleArray[position]);
myDescription.setText(descriptionArray[position]);
return row;
}
}
如果您可以发布LogCat或至少指出产生错误的行,我们可以为您提供更好的帮助。 同样,初始化这样的ListView效率很低。
实施“查看器模式”会有所帮助。
优化的CustomListAdapter
public class CustomListAdapter extends ArrayAdapter<String>
{
Context context;
int[] images;
String[] titleArray;
String[] descriptionArray;
public CustomListAdapter(Context c, String[] title, int imgs[],String[] desc) {
super(c, R.layout.activity_show,R.id.textView1,title);
this.context = c;
this.images = imgs;
this.titleArray = title;
this.descriptionArray = desc;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder;
if(convertView == null)
{
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activity_show, parent,false);
viewHolder.title = (TextView)convertView.findViewById(R.id.textView1);
viewHolder.description = (TextView)convertView.findViewById(R.id.textView2);
viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) convertView.getTag();
if(titleArray[position] != null)
{
viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
viewHolder.title= (TextView) convertView.findViewById(R.id.textView1);
viewHolder.description = (TextView) convertView.findViewById(R.id.textView2);
viewHolder.image.setImageResource(images[position]);
viewHolder.title.setText(titleArray[position]);
viewHolder.description.setText(descriptionArray[position]);
}
}
return convertView;
}
private class ViewHolder
{
TextView title,description;
ImageView image;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.