我试图在第一行中实现一个ListView
图像,而在其余项目上标题,但它不起作用。对此有何解决方案?
private class CustomListAdapter extends ArrayAdapter {
private Context c;
String titles[];
public CustomListAdapter(Context context, String titles[]) {
super(context,R.id.textView1);
this.c = context;
this.titles=titles;
// this.imagedrawer=imagedrawer;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
LayoutInflater inflater = null;
if(position==0)
{
inflater= (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);
View v=inflater.inflate(R.layout.profileimage,parent,false);
ImageView drawerprofile=(ImageView) findViewById(R.id.imageViewdrawer);
drawerprofile.setImageResource(R.drawable.camera);
}
else
{
inflater= (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);
View v=inflater.inflate(R.layout.listviewitems,parent,false);
TextView tv1=(TextView) findViewById(R.id.textView1);
tv1.setText(titles[position]);
}
return view;
}`
答案 0 :(得分:0)
你在适配器类中不使用视图
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
imageView.setImageResource(R.drawable.phote);
return rowView;
}
答案 1 :(得分:0)
使用此功能。
if (position % 2 == 1) {
inflater= (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);
View v=inflater.inflate(R.layout.profileimage,parent,false);
ImageView drawerprofile=(ImageView) findViewById(R.id.imageViewdrawer);
drawerprofile.setImageResource(R.drawable.camera);
} else {
inflater= (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);
View v=inflater.inflate(R.layout.listviewitems,parent,false);
TextView tv1=(TextView) findViewById(R.id.textView1);
tv1.setText(titles[position]);
}
答案 2 :(得分:0)
ListView有一个标题。您可以在Header和TextView中添加其他元素。
您需要重复使用这些视图。首先检查converView是否为空,只有在它为空时才膨胀。
答案 3 :(得分:0)
您没有返回正确的视图。您正在对v变量中的每个View进行充气,但随后您将返回视图。
所以替换:
View v=inflater.inflate(R.layout.listviewitems,parent,false);
通过
view=inflater.inflate(R.layout.listviewitems,parent,false);
此外,您必须在膨胀的视图中找到视图而不是活动/片段视图。我的意思是用这个:
ImageView drawerprofile=(ImageView) view.findViewById(R.id.imageViewdrawer);
而不是:
ImageView drawerprofile=(ImageView) findViewById(R.id.imageViewdrawer);
但是这里的最佳做法是为ListView使用Header ,在这个标题中你可以放置你的ImageView,其余的行将在getView方法中返回。此外,您必须在此链接中使用ViewHolder模式,您可以看到如何实现它:ViewHolder pattern