首页 > 解决方案 > 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);
        }
    }
}

标签: android-recyclerviewhighlightselecteditem

解决方案


推荐阅读