同时为两个布局充气

时间:2015-03-11 15:23:19

标签: android listview layout

我试图在ListView中同时充气两个布局。我实际上做到了,但这不是我想要的。

这是我的适配器中的getView代码:

public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
//Create InstalacionEnLista object
Instalacion inst = items.get(position);
int id = inst.getIdCategoria();
if(id == 1){
     if (convertView == null || convertView.findViewById(R.id.custom_todaslasinstalaciones_categoria_header_titulo)==null)
        {
        LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inf.inflate(R.layout.custom_todaslasinstalaciones_header_categoria, null);
        TextView nombreCategoria = (TextView)                                               v.findViewById(R.id.custom_todaslasinstalaciones_categoria_header_titulo);
        nombreCategoria.setText("Esto es una categoria");
        }

}else{
    LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = inf.inflate(R.layout.custom_todaslasinstalaciones_conflecha, null);
    TextView nombre = (TextView)v.findViewById(R.id.custom_todaslasinstalaciones_conflecha_tvnombreinstalacion);
    nombre.setText(inst.getNombre());
}
return v;

}

如果id为1,我希望两个Layouts都能通过项目信息进行充气。 如果id不是= 1,我只想要一个布局来膨胀。

此致

2 个答案:

答案 0 :(得分:0)

看来您的适配器还可以。您是否在列表中添加所有行? 我的意思是,你应该怎么做才能让它运转起来:

0-创建xml文件(listView和行)

1-创建行类(在您的情况下:Instalacion)

2-创建适配器(使用getView等)

3-创建' Instalacion'某处的对象(需要adpater的对象)

4-将元素添加到此列表中(InstalacionList)

5-初始化列表(设置de adapter等)

希望它有所帮助。如果需要,我可以尝试发布一些代码。

答案 1 :(得分:0)

我解决了这个问题:

        //Category layout inflate            
    if (convertView == null || convertView.findViewById(R.id.category)==null)
            {
            LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inf.inflate(R.layout.custom_todaslasinstalaciones_header_categoria, null);
            //disable click over category
            v.setOnClickListener(null);
            v.setOnLongClickListener(null);
            v.setLongClickable(false);

            }
        TextView nombreCategoria = (TextView) v.findViewById(R.id.custom_todaslasinstalaciones_categoria_header_titulo);
        nombreCategoria.setText(nombre);




    //simple item layout inflate
    else{

            LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inf.inflate(R.layout.custom_todaslasinstalaciones_conflecha, null);
            TextView tvNombre = (TextView) v.findViewById(R.id.custom_todaslasinstalaciones_conflecha_tvnombreinstalacion);
            tvNombre.setText(nombre);


    }
return v;

谢谢。

相关问题