0

항목 선택 스위치가있는 사용자 지정 recyclerview를 구현 중입니다. 앱 표시 줄 (상단 표시 줄)의 오른쪽 모서리에있는 "모두 선택"옵션이 있습니다. 사용자가 Select All 옵션을 사용하도록 허용하고 recyclerview에서 개별 항목을 선택할 수도 있습니다.모든 옵션 및 개별 항목 선택 recyclerview android 선택

모두 선택과 함께 개별 선택을 구현하는 방법을 모르겠습니다. 모두 선택 옵션을 사용한 후 항목의 선택을 취소하고 목록을 스크롤 할 때 아래 코드의 onBindViewHolder 메서드에서 isSelectedAll 플래그가 true로 설정되므로 항목이 자동으로 선택됩니다.

******SELECT ALL CLICK LISTENER IN ACTIVITY CLASS****** 
mBinding.imageViewActionSelect.setOnClickListener(v -> { 
    mAdapter.selectAll(); 
}); 

******ADAPTER CLASS****** 
public void selectAll() { 
    isSelectedAll = true; 
    notifyDataSetChanged(); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    if (isSelectedAll) { 
     holder.mSwitchView.setChecked(true); 
    } 
    else 
     holder.mSwitchView.setChecked(false); 
} 
+1

컬렉션 모델에서 해당 플래그를 추가하여 제어 할 수있게하십시오. –

+0

개별 다중 선택 상태를 처리하기 위해 필드를 추가 했습니까? 그렇다면 모든 항목 필드 값을 true로 만들고 항목을 선택 해제 한 다음 해당 필드 값을 false로 변경하십시오. 해당 필드를 기반으로 각 항목을 표시해야 현재 문제가 해결됩니다. –

+0

실제 코드의 결과는 무엇입니까? – Cochi

답변

0

먼저, (당신의 POJO 클래스에 하나의 변수에 isSelected을 추가 한 후, 당신은 모든 옵션을 선택하면서, 루프에있는 항목의 목록을 실행하여 사실 그 변수를 확인한 다음 adapter.notifyDataSetChanged 전화). 이제 개별 항목을 선택하거나 선택 취소하면 필요에 따라 isSelected 변수가 true 또는 false가되며 notifyDataSetChanged()를 호출하는 것을 잊지 마십시오. 너는 가야한다.

0

이 FastAdapter 라이브러리를 사용할 수 있습니다 : https://github.com/mikepenz/FastAdapter. 단 한번의 선택만으로 쉽게 완성됩니다. 다중 선택의 경우 모든 항목을 반복하고 mAdapter.toggleSelection(position)으로 전화하십시오. 선택한 항목이 필요하면 mAdapter.getSelection()으로 쉽게 전화 할 수 있습니다. 그 일을 쉽게 할 수 있고, 스스로 할 필요가 없습니다.