2017-10-20 1 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"/> 

을 추가해야합니다.