2017-10-20 14 views
0

私はRecyclerViewにユーザーのリストを持っています。特定の行をクリックするとダイアログが表示され、ユーザーはセルの背景色を変更できます。しかし、すべてが動作しますが、私が携帯電話を回転させると白い背景に戻ります。 recyclerViewの状態を保存し、回転後に復元するにはどうすればよいですか?私はsaveInstanceStateで試しましたが、その効果を達成できませんでした。アダプタで回転後のRecyclerViewの状態を復元する

MyViewHolder:

public MyViewHolder(View view) { 
       super(view); 
       user_name = (TextView) view.findViewById(R.id.user_name); 
       user_surname = (TextView) view.findViewById(R.id.user_surname); 
       User_description = (TextView) view.findViewById(R.id.user_description); 
       user_dob = (TextView) view.findViewById(R.id.user_dob); 
       user_avatar = (AvatarImageView) view.findViewById(R.id.user_avatar); 
       mTrash = (ImageView) view.findViewById(R.id.trash_img); 


       item_ll = (LinearLayout)view.findViewById(R.id.item_layout); 
       item_ll.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         ((MainActivity) ctx).userItemClick(getAdapterPosition()); 

        } 
       }); 
      } 

MainActivityはuserItemClick方法があります。

@Override 
     public void userItemClick(final int pos) { 
      Log.e(TAG, "userItemClick: " + pos); 
      DetailsDialog dialog = new DetailsDialog(this,mRecyclerView,pos); 
      dialog.show(); 
     } 

をそして、ここに私のカスタムダイアログクラスです:ここ

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dialog_details); 
    mYelloewLayout = (LinearLayout) findViewById(R.id.yellow_layout); 
    mGreenLayout = (LinearLayout) findViewById(R.id.green_layout); 
    mRedLayout = (LinearLayout) findViewById(R.id.red_layout); 
    mYelloewLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      view.getChildAt(pos).setBackgroundColor(getContext().getResources().getColor(R.color.yellow)); 
      dismiss(); 
     } 
    }); 
    mRedLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      view.getChildAt(pos).setBackgroundColor(getContext().getResources().getColor(R.color.red)); 
      dismiss(); 
     } 
    }); 
    mGreenLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      view.getChildAt(pos).setBackgroundColor(getContext().getResources().getColor(R.color.green)); 
      dismiss(); 
     } 
    }); 


} 

私のマニフェスト

です

お願いします。 :)

+0

リサイクラービューの状態を保存しないでください。基礎となるアイテムの状態を保存します。 – poss

+0

あなたのAndroidManifest.xmlを表示してください。 –

+2

あなたの回答はこちらhttps://stackoverflow.com/a/32283912/5281666 –

答えて

2

あなただけRecyclerViewを持って活動に

<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/> 

この行を追加する必要があります。

関連する問題