我正在使用ItemTouchHelper
类在RecyclerView Items上实现移动,
我的List的大小为22,所以在滚动时,每隔10个项目(例如我认为)都会显示相同的状态(例如BackgroundColor)。
因此,在解决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);
以不回收项目。
如果有人找到解决方案或对此问题的解释,请告诉我,谢谢。