Категоризация в ListView
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Категоризация в ListView
Всем привет!
Интересует как сделать вот такой список:
Не знаю как так сделать, что бы название категории списка была на том же уровне, что и первая ячейка из этой категории.
Наткнулся на парочку библиотек, которые это позволяют но пахнет всё это каким-то страшными костылями. Как нативно это реализуется?
Интересует как сделать вот такой список:
Не знаю как так сделать, что бы название категории списка была на том же уровне, что и первая ячейка из этой категории.
Наткнулся на парочку библиотек, которые это позволяют но пахнет всё это каким-то страшными костылями. Как нативно это реализуется?
Re: Категоризация в ListView
кастомный листвью, где слева картинка, буква, меняющая свою видимость. Очень простенько.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Категоризация в ListView
не думал, что настолько простенько.Foenix писал(а):кастомный листвью, где слева картинка, буква, меняющая свою видимость. Очень простенько.
Re: Категоризация в ListView
так а что сложного-то?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Категоризация в ListView
а как убираются dividers между айтемами? Я пока сам особо не понял как это делается, хотя понятно что тут нет магии
Re: Категоризация в ListView
а там параметр был так как-то и назывался - дивайдерс=0 , в общем что-то такое
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Категоризация в ListView
android:divider="@null"Mikhail_dev писал(а):а как убираются dividers между айтемами? Я пока сам особо не понял как это делается, хотя понятно что тут нет магии
android:dividerHeight="0dp"
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Категоризация в ListView
Да я понимаю как его убрать, я не понимаю как его сделать чтобы он показывался в определенных случаях. Вы же видите что он есть, а в некоторых случаях его нет.
Re: Категоризация в ListView
TextViewMikhail_dev писал(а):Да я понимаю как его убрать, я не понимаю как его сделать чтобы он показывался в определенных случаях. Вы же видите что он есть, а в некоторых случаях его нет.
visibility gone
height 1dp
width match_parent
+ padding
----------------------------------
if ( bla bla ) tv.visibility=visible
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Категоризация в ListView
А, т.е. делаем скрытым дивайдеры у ListView, добавляем свою View как divider И там уже пользуемся условием. В принципе да, будет работать. Спасибо.
Re: Категоризация в ListView
это не дивайдер, а полоска нарисованная, видно же что не сначала.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Категоризация в ListView
Я предполагал, что добавили какой-нибудь метод/свойство/интерфейс который позволяет с таким header оформить список.Foenix писал(а):так а что сложного-то?
Re: Категоризация в ListView
Осваивай КастомныйАдаптер extends ArrayAdapter - пригодится не один раз.Lucifer777 писал(а):Я предполагал, что добавили какой-нибудь метод/свойство/интерфейс который позволяет с таким header оформить список.Foenix писал(а):так а что сложного-то?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Категоризация в ListView
А я всегда использую BaseAdapter. Посмотрел на ArrayAdapter, он по сути типизированный BaseAdapter, но я не понял как в нём данные изменять. Как это делается? К примеру мне пришла новая коллекция данных.
Re: Категоризация в ListView
А как ты меняешь в BaseAdapter-е?Mikhail_dev писал(а):А я всегда использую BaseAdapter. Посмотрел на ArrayAdapter, он по сути типизированный BaseAdapter, но я не понял как в нём данные изменять. Как это делается? К примеру мне пришла новая коллекция данных.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Категоризация в ListView
Написал дополнительный метод setData, там подменяю коллекцию и notifyDataChanged вызываю
Re: Категоризация в ListView
Ну тоже самое: в Активити меняешь\обновляешь коллекцию(аррей лист), которую передаешь в конструкторе. и вызываешь у адаптора нотифай... Если в адаптере, то в конструкторе нужно сохранить ссылку на коллекцию и создать отдельный метод для обновления как у БейзАдаптера.Mikhail_dev писал(а):Написал дополнительный метод setData, там подменяю коллекцию и notifyDataChanged вызываю
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Категоризация в ListView
Что значит тоже самое? =) я передаю в метод её, а в ArrayAdapter'e вы создаёте новый экземпляр адаптера, чтобы обновить данные. Это, извините, вообще разные вещи.
Re: Категоризация в ListView
Пример:
П.С. где item- экзмепляр класса-контейнера, написанного спецом для адаптера
МайКласс (){
String name;
//getters setters constructors...
}
Никакие дополнительные методы типа гетКаунт гетОбдект и т.д. не нужны (добавляются по желанию).
В активити в конструктор адаптера передается (контекст, аррейлист<МайКласс>)
Код: Выделить всё
public class MyClassAdapter extends ArrayAdapter<MyClass> {
private Activity mActivity;
private List<MyClass> list;
public TenderAdapter(Activity activity, List<MyClass> list) {
super(activity, R.layout.li_item_tender, list);
this.mActivity = activity;
this.list = list;
}
public class ViewHolder {
public TextView tvName;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = mActivity.getLayoutInflater();
rowView = inflater.inflate(R.layout.li_item_tender, null, true);
holder = new ViewHolder();
holder.tvName= (TextView) rowView.findViewById(R.id.tvName);
rowView.setTag( holder );
} else {
holder = (ViewHolder) rowView.getTag();
}
MyClass item = getItem(position);
holder.tvName.setText( item.getName() );
return rowView;
}
}
МайКласс (){
String name;
//getters setters constructors...
}
Никакие дополнительные методы типа гетКаунт гетОбдект и т.д. не нужны (добавляются по желанию).
В активити в конструктор адаптера передается (контекст, аррейлист<МайКласс>)
Последний раз редактировалось doter.ua 28 апр 2015, 11:25, всего редактировалось 1 раз.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Категоризация в ListView
новый адаптер не создается, Просто изменяется дата аррейлиста и вызывается нотифай. Про передачу в конструкторе к тому, что передается ссылка, и можно менять исходный аррейлист (который передавался в конструкторе при создании) и обновления прокатят.Mikhail_dev писал(а):Что значит тоже самое? =) я передаю в метод её, а в ArrayAdapter'e вы создаёте новый экземпляр адаптера, чтобы обновить данные. Это, извините, вообще разные вещи.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.