Android 出现DialogFragment时,RecyclerView使项目从选定变为未选定

Android 出现DialogFragment时,RecyclerView使项目从选定变为未选定,android,android-recyclerview,Android,Android Recyclerview,我已经通过在RecyclerItemClicked Listener上单击实现了taRecyclerServiceAdapter,方法如下: public class MyRecyclerViewButtonsAdapter extends RecyclerView.Adapter<MyRecyclerViewButtonsAdapter.CustomViewHolder> { private List<String> buttonNames; priva

我已经通过在RecyclerItemClicked Listener上单击
实现了ta
RecyclerServiceAdapter
,方法如下:

public class MyRecyclerViewButtonsAdapter extends RecyclerView.Adapter<MyRecyclerViewButtonsAdapter.CustomViewHolder> {
    private List<String> buttonNames;
    private OnRecyclerItemClicked onRecyclerItemClicked;
    private int selectedPosition;

    public MyRecyclerViewButtonsAdapter(String[] buttonNamesArr, int currentSelectedPosition, OnRecyclerItemClicked listener) {
        this.buttonNames = new ArrayList<>();
        this.selectedPosition = currentSelectedPosition;

        for (int i = 0; i < buttonNamesArr.length; i++) {
            buttonNames.add(i,buttonNamesArr[i]);
        }

        onRecyclerItemClicked = listener;
    }

    @Override
    public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        @SuppressLint("InflateParams")
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.button_item, null);
        return new CustomViewHolder(view, onRecyclerItemClicked);
    }

    @Override
    public void onBindViewHolder(CustomViewHolder holder, int position) {
        holder.button.setText(buttonNames.get(position));
        holder.button.setPressed(position == selectedPosition);
    }

    @Override
    public int getItemCount() {
        return (null != buttonNames ? buttonNames.size() : 0);
    }


    public int getSelectedPosition() {
        return selectedPosition;
    }

    public void setSelectedPosition(int selectedPosition) {
        this.selectedPosition = selectedPosition;
    }

    class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        protected Button button;
        protected OnRecyclerItemClicked itemClickedListener;

        public CustomViewHolder(View view, OnRecyclerItemClicked itemClickedListener) {
            super(view);
            this.button = (Button) view.findViewById(R.id.button_item);
            this.itemClickedListener = itemClickedListener;
            this.button.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            itemClickedListener.onRecyclerItemClicked(view, getAdapterPosition());
        }
    }

    public interface OnRecyclerItemClicked {
        void onRecyclerItemClicked(View view, int position);
    }
}
取决于
位置
,我在显示DialogFragment的活动中加载一个片段,以显示加载屏幕,直到获取数据,依此类推。 但在显示DialogFragment后,不再按下recyclerview中的按钮。
有人知道什么是错误的吗?

创建这样一个POJO类

public class RecyclerViewItem{
  String buttonName;
  boolean isSelected;
  public boolean getSelected(){
    return isSelected;
  }
 public void setSelected(boolean isSelected){
   this.isSelected = isSelected;
 }
public void setName(String buttonName){
   this.buttonName = buttonName;
 }
public String getName(){
   return buttonName;
 }
}


使用此选项填充RecyclerView中的项目。根据所选项目设置isSelected属性。这样,即使列表在两次刷新之间,该项目仍将保持选中状态。

感谢您的快速回答,但没有帮助。
 @Override
    public void onRecyclerItemClicked(View view, int position) {
        mAdapter.setSelectedPosition(position);
        lastSelectedButtonPosition = position; //value for savedInstance
        mAdapter.notifyDataSetChanged();
        mRecycler.scrollToPosition(position);

        loadFragment(position);
    }
public class RecyclerViewItem{
  String buttonName;
  boolean isSelected;
  public boolean getSelected(){
    return isSelected;
  }
 public void setSelected(boolean isSelected){
   this.isSelected = isSelected;
 }
public void setName(String buttonName){
   this.buttonName = buttonName;
 }
public String getName(){
   return buttonName;
 }