2016-10-26 4 views
0

그래서 각 항목에 스위치 버튼이있는 recyclerview이 있습니다. 스위치 버튼의 상태는 sharedpreferance의 데이터에 따라 달라집니다. onBindViewHolder 방법을 확인합니다.android : recyclerview의 Switch.OnCheckChangedListener와 문제가 있습니다.

각 항목이 스크롤하는 동안 재활용되며, onBindviewHolder이 매번 호출되고 있으며이 경우 스위치 상태가 초 단위로 변경되기 때문에 Switch.OncheckChangedListener을 제어 할 수 없습니다 (스크롤하는 동안).

OnClickListener을 사용하면 처음에는 좋은 생각 인 것처럼 보였지만 사용자가 스 와이프하여 스위치를 전환하면 실패합니다.

+0

당신이 그 (것)들을 SharedPreferance에 저장하는 이유는 스위치 버튼의 상태가 데이터 세트 (당신이 당신의 어댑터 통과), 내가 아는 해달라고에서해야 하는가? – Fndroid

답변

0

일부 작업은 작동 할 수도 있지만 작동하지 않을 수도 있지만, Switch.OncheckChangedListener 메서드 호출 중에 getView() 메서드에서 플래그 집합을 true로 설정하고 플래그가 false이면 논리를 수행하고 그렇지 않으면 플래그를 false로 설정하십시오. 예컨대

boolean isRecycleViewCall = false; 
getView() { 
isRecycleViewCall = true; 
} 
Switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if(!isRecycleViewCall) { 
        //your code 
       } else { 
        isRecycleViewCall = false; 
       }  
      } 
     }); 
관련 문제