Слияние кода завершено, страница обновится автоматически
RecyclerView Adapter — часто используемые функции (нажатие на элемент, привязка данных, Header, Footer, анимация и т. д.) в одной упаковке.
FastAdapter<String> adapter = new FastAdapter<String>(this, R.layout.item_normal, NAMES) {
@Override
protected ViewHolder onCreateViewHolderImpl(@NonNull ViewGroup parent, int viewType) {
if (Math.random() > 0.5) {
TextView textView = new TextView(parent.getContext());
textView.setId(R.id.title);
textView.setTextSize(40f);
// Возвращаем пользовательский Holder
return new ViewHolder(textView);
}
// Возвращаем созданный по умолчанию Holder (необходимо установить default layoutRes)
return super.onCreateViewHolderImpl(parent, viewType);
}
// Обработка пользовательского itemType
@Override
protected int getItemViewTypeImpl(int position, int dataPosition) {
return super.getItemViewTypeImpl(position, dataPosition);
}
@Override
public void bindData(ViewHolder holder, String s) {
// Привязываем стиль данных
holder.setTextColorRes(R.id.title, R.color.design_default_color_primary_dark);
holder.setText(R.id.title, s);
}
};
// Нажатие на список
adapter.setOnItemClickListener((view, holder, data) -> {
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
});
// Обработка события нажатия на дочерний элемент списка
adapter.setOnItemChildClickListener(R.id.trigger, (view, holder, data) -> {
Toast.makeText(this, "trigger -> " + data, Toast.LENGTH_SHORT).show();
});
// Устанавливаем анимацию, можно реализовать ItemAnimator интерфейс, once = true означает, что анимация выполняется только один раз
adapter.setItemAnimator(new AlphaItemAnimator(), false);
// Устанавливаем пользовательский SpanSizeLookup
adapter.setSpanSizeLookup(new SpanSizeLookup<String>() {
@Override
public int getSpanSize(int itemViewType, int spanCount, int position, @Nullable String s) {
// Сразу возвращаем spanCount, чтобы эта позиция занимала целую строку
if ("Sofia".equals(s)) return spanCount;
return super.getSpanSize(itemViewType, spanCount, position, s);
}
});
// Добавляем Header
adapter.addHeaderView(makeATextView());
// Добавляем Footer
adapter.addFooterView(makeATextView());
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
recyclerView.setAdapter(adapter);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )