Я хочу создать собственный список, используя макет simple_list_item_1, чтобы изменить шрифт, фон и т. Д. Как вы это делаете?Как переопределить создание списка элементов в ListView?
Я попытался переопределить getView
с помощью адаптера, расширяющего ArrayAdapter
, но всякий раз, когда я что-то делаю в списке (например, поиск), сгенерированный список теряет всякую настройку, пока я не скрою клавиатуру. Вот почему я подумал, что было бы лучше, если бы я мог переопределить метод создания списка в первую очередь.
Вот пользовательский адаптер класса
public class AlphabeticalAdapter extends ArrayAdapter<String> implements SectionIndexer {
private HashMap<String, Integer> _alphaIndexer;
private String[] _sections;
private Typeface _typeface;
public AlphabeticalAdapter(Context c, int resource, List<String> data) {
// create ArrayAdapter<String>
super(c, resource, data);
try {
// generate typeface
_typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/hs_bold.otf");
} catch (Exception e) {
e.printStackTrace();
}
}
public int getPositionForSection(int section) {
return _alphaIndexer.get(_sections[section]);
}
public int getSectionForPosition(int position) {
return 1;
}
public Object[] getSections() {
return _sections;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text = (TextView) convertView;
if (text != null) {
text.setTypeface(_typeface);
}
return super.getView(position, convertView, parent);
}
}
- шаг # 1: скопируйте макет 'simple_list_item_1' в свой проект и внесите изменения в него. Вы найдете копии этого макета в вашей установке Android SDK. Шаг № 2: Используйте свой переработанный макет в конструкторе 'ArrayAdapter'. Шаг № 3: Если вы хотите иметь динамические эффекты на основе данных модели, переопределите 'getView()' и измените виджеты строк по мере необходимости. Просто убедитесь, что вы * всегда * изменяете виджеты строк, поскольку строки перерабатываются, и поэтому вы не обязательно знаете, что такое начальное состояние ваших виджетов. – CommonsWare
", но всякий раз, когда я делаю что-то в списке (например, поиск), сгенерированный список теряет всякую настройку, пока я не скрою клавиатуру" - предположительно есть ошибка в реализации 'getView()'. Мы не можем вам помочь с этим, так как ваш вопрос не содержит ваш код 'getView(), не говоря уже о каком-либо описании точно, какая настройка была потеряна. Не стесняйтесь редактировать свой вопрос и добавлять этот материал, если вам нужна конкретная помощь. Скриншоты также будут полезны, но вам, возможно, придется загружать их в другое место и ссылаться на них здесь, так как у вас может не быть репутации для загрузки изображений напрямую. – CommonsWare
@CommonsWare Я добавил пользовательский класс адаптера. В основном, когда я загружаю активность (и заполняю список), есть короткий момент, когда список неформатирован. Перед форматированием требуется секундная смена. – geft