android-recyclerview - reyclerview 中突出显示的项目在 scolling 时会丢失其状态
问题描述
我试图在 recylerview 中突出显示单击的项目,但是当您滚动突出显示的项目时,不再保持突出显示。我不知道如何在滚动时保持它们的状态。适配器类中的实现,如下所示:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder>{
boolean isEnable = false;
List<ItemFiles> selectList = new ArrayList<>();
public MyAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout._main,parent,false);
return new MyViewHolder(view);
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, int
position) {
holder.item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isEnabled) {
ClickItem(holder);
}
}
private void ClickItem(MyHolder holder) {
ItemFiles s = files.get(holder.getAdapterPosition());
if (holder.highlightItem.getVisibility() == View.GONE){
holder.highlightItem.setVisibility(View.VISIBLE);
holder.highlightItem.setBackgroundColor(Color.LTGRAY);
selectList.add(s);
// this is what I tried to keep the highlighted state but no result
selectList.get(holder.getAdapterPosition()).setSelected(true);
} else {
holder.highlightItem.setVisibility(View.GONE);
holder.highlightItem.setBackgroundColor(Color.TRANSPARENT);
selectList.remove(s);
selectList.get(holder.getAdapterPosition()).setSelected(false);
}
}
}
解决方案
推荐阅读
- python - 从 JSON 数据解释 Python 函数
- python - 编写 Min-Max 缩放函数
- reactjs - 自定义 React 大日历颜色
- ajax - 在 Laravel 中的 post 方法之后,无法通过 Ajax 调用重定向到新路由
- java - 是否可以将 ActionEvent 传递给标签上的“onMouseClick”?
- streamlink - Streamlink 如何在下载时寻找 X 分钟
- python - 让被调用的方法处理调用者类可以处理的业务是一种不好的做法吗?
- java - 如何使登录错误(“错误的用户名/密码”)在登录页面中更具体
- c - 试图理解 C 语法
- reactjs - 为什么要创建上下文而不仅仅是导出对象?