2015-03-11 3 views
-1

Iḿ пытается раздуть два макета одновременно в 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; 

}

Если идентификатор 1, я хочу как Макеты надуть с информацией элемента. Если id = 1, мне нужен только один макет для раздувания.

С уважением

+1

Почему несколько раскладок? Почему бы не создать два «TextViews» в одном макете и изменить видимость в зависимости от идентификатора? – codeMagic

+0

Я согласен, я недавно работал над подобной проблемой и обнаружил, что использование одного макета и изменение свойств макета в моем адаптере является более простым вариантом. –

+0

Я реализую разделы в спискеView. Итак, если элемент находится в категории 1. Затем глава должен показать название категории, за которой следует элемент. В моем коде первый элемент потерян. – aldakur

ответ

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; 

Спасибо.

0

Кажется, что ваш адаптер в порядке. Вы добавляете все строки в свой список? Я имею в виду, что вы должны сделать, чтобы он и работает:

0- создать файлы XML (ListView и строк)

1- создать класс строк (в вашем случае: Instalacion)

2- создать адаптер (с GetView и так далее)

3- создать список объектов «» Instalacion где-то (тот, который нуждается в adpater)

4- добавить элементы в этом списке (InstalacionList)

5- инициализировать список (установить адаптер и т. Д.)

Надеюсь, это поможет. Если это необходимо, я могу попытаться опубликовать код.

+0

Да. Я сделал все шаги. Но в моем коде результат: > название раздела, > item2, item3, item4, ..... И я хочу это: имя раздел, item1, item2, item3 , item4, .... – aldakur

+0

Разделяются ли название раздела и item1 отдельно? – Andy

+0

Нет. Это тот же элемент (объект). Например, объект имеет свойства. item.name, item.address, item.category, ... – aldakur

Смежные вопросы