无法使用Android中的SimpleAdapter在Listview中设置标头

时间:2014-09-11 05:44:56

标签: android listview header simpleadapter

我正在尝试使用ListViewSimpleAdapter项进行分组。我使用两个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);

2 个答案:

答案 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合并适配器

https://github.com/commonsguy/cwac-merge

答案 1 :(得分:0)

判断条件错误

convertView始终为null。

你可以搜索android ListView resusing views 例如ListView reusing views when ... I don't want it to

所以如果你想使用两个布局,请使用其他判断条件。