Я использую класс ItemTouchHelper
для реализации перемещения элементов RecyclerView, размер моего Списка равен 22, поэтому при прокрутке состояние элементов, такое как BackgroundColor, показывает одинаковые каждые 10 элементов (я так думаю).
, поэтому после переопределения проблема getItemViewType
решена, но есть другая проблема, когда я перемещаю элемент, он прыгает только на одну позицию, и мне приходится перемещать его снова на одну позицию
Я понимаю, что проблема переопределяет getItemViewType
сейчас Я не знаю, что делать, чтобы решить эту проблему
кто-нибудь может помочь?
переопределенный метод:
@Override
public int getItemViewType(int position) {
return position;
}
------------- - ОБНОВЛЕНИЕ --------------
public class SearchFiltersAdapter extends RecyclerView.Adapter<SearchFiltersAdapter.SearchFilterViewHolder> {
private List<ContentDatabases> dbList;
public SearchFiltersAdapter(List<ContentDatabases> dbList) {
this.dbList = dbList;
}
@NonNull
@Override
public SearchFilterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_search_filters_adapter, parent, false);
return new SearchFilterViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull SearchFilterViewHolder holder, int position) {
ContentDatabases currentDb = dbList.get(holder.getAdapterPosition());
holder.bind.dbTitle.setText(dbList.get(holder.getAdapterPosition()).dbTitle);
if (currentDb.isSelected) {
ViewManipulateHelper.setCardSelected(holder.bind.getRoot(), holder.bind.dbTitle);
}
}
@Override
public int getItemCount() {
return dbList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
static class SearchFilterViewHolder extends RecyclerView.ViewHolder {
RowSearchFiltersAdapterBinding bind;
SearchFilterViewHolder(@NonNull View itemView) {
super(itemView);
bind = RowSearchFiltersAdapterBinding.bind(itemView);
}
}
}
--------------- ОБНОВЛЕНИЕ --------- ------
к сожалению, я не могу найти никакого решения для этой проблемы, поэтому в классе Adapter и методе onBindViewHolder я просто вызываю holder.setIsRecyclable(false);
, чтобы не перерабатывать элементы.
, если кто-то найдет решение или объяснение ПОЖАЛУЙСТА, дайте мне знать, спасибо.