我试图在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,我只想要一个布局来膨胀。
此致
答案 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;
谢谢。