我正在尝试使用ListView
对SimpleAdapter
项进行分组。我使用两个Layouts
,r1和r2。我已完成以下编码,但我只获得了ListView中显示的布局r2
的内容。任何人都可以指导我在哪里出错吗?我的代码如下:
adapter=new SimpleAdapter(MainActivity.this, arraylist,R.layout.r1,new String[]{"key1","key2"},new int[]{R.id.textView1,R.id.textView2})
{
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v=super.getView(position, convertView, parent);
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(MainActivity.this.LAYOUT_INFLATER_SERVICE);
int type = getItemViewType(position);
Log.i("position + convertview + type ",""+position+","+convertView+","+type);
if(convertView==null)
{
v = inflater.inflate(R.layout.r2, parent, false);
}
else
{
v = inflater.inflate(R.layout.r1, parent, false);
}
return v;
}
};
l.setAdapter(adapter);
答案 0 :(得分:0)
在getView
中
if (type == FIRST_TYPE) {
//infalte layout of type1
}else if( type == SECOND_TYPE){
//infalte layout of type2
}
您的类型对应。
private static final int FIRST_TYPE= 0;
private static final int SECOND_TYPE = 1;
您可以根据位置设置标题。
@Override
public int getItemViewType(int position) {
if (position== 0){
type = FIRST_TYPE;
} else if (position == 1){
type = SECOND_TYPE;
}
return type;
}
您还可以使用commonsware合并适配器
答案 1 :(得分:0)
判断条件错误
convertView始终为null。
你可以搜索android ListView resusing views
例如ListView reusing views when ... I don't want it to
所以如果你想使用两个布局,请使用其他判断条件。