Такое представление абсолютно возможно при использовании ListView
. Вам потребуется реализовать собственный ListAdapter с пользовательским поведением getView.В зависимости от положения представления вы можете либо сделать неактивное представление делителя (которое не будет активным), либо вы можете затем отобразить сетку для соответствующей категории. Этот учебник поможет вам начать реализацию пользовательских адаптеров с помощью getView.
Ниже приведен пример кода того, как может выглядеть getView
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
boolean isDivider = false //TODO logic here
if (isDivider){
if (v == null) {
LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(R.layout.custom_adapter_item, null);
}
Map<String, String> item = items.get(position);
initView(v, item);
return v;
} else{
View v = null //TODO init divider view here
return v;
}
}
private void initView(View v, Map<String, String> item) {
String[] keys = DummyData.columns;
((TextView) v.findViewById(R.id.value_left)).setText(item.get(keys[0]));
((TextView) v.findViewById(R.id.value_right)).setText(item.get(keys[1]));
}
.раздувать ваш макет gridview, где я раздуваю свой custom_adapter_item, но это основа для настраиваемого просмотра списка со сложными элементами списка
Ваша иерархия представления в конечном итоге будет выглядеть примерно так
- ListView
- Category1Header (LinearLayout))
- Заголовок (текстовое поле)
- Category1Contents (Gridview)
- Cat1Cont1 (LinearLayout)
- значок (изображение)
- описание (текстовое поле)
- Category2Header
Вы поняли