Android Recyclerview Checkbox position Check 유지

2020. 6. 8. 16:31Android

반응형

1.포지션 Data 모델 생성  OR ArrayList<String> 생성

 

2.액티비티에서 해당 리사이클러뷰 어뎁터 포지션값을 받아와서 저장

 

인터페이스 생성

public interface click_interface {
    void onClick (String position);
}

MainActivity

public class MainActivity extends AppCompatActivity implements click_interface{

	Adapter adapter;
    ArrayList<String> position_data;
    Context context;
    Recyclerview recyclerview;
    RecyclerView.LayoutManager layoutManager;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_message__list);
        
        context = this;
        
        recyclerview = findViewById(R.id.recyclerview);
        
        recyclerview.setHasFixedSize(true); //리사이클러뷰 셋팅
        layoutManager = new LinearLayoutManager(MainActivity.this);//리사이클러뷰 셋팅
        recyclerview.setLayoutManager(layoutManager);// 리사이클러뷰 셋팅
        
        
        adapter = new Adapter(context,deleteClickInterface);
        
        recyclerview.setAdapter(adapter);

    }
    
    
    @Override
    public void onClick(String position) { //삭제하기 버튼 클릭시
    
        position_data.add(position);
        message_adapter.set_position_data(position_data);
 

    }

Adapter

public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

	ArrayList<String> position_data  = new ArrayList<String>();
	private click_interface ClickInterface;
    
    public Adapter(Context context , click_interface deleteClickInterface){
          this.context = context;
          this.ClickInterface = ClickInterface;
     }
     
     public void set_position_data(ArrayList<String> position_data){
        this.position_data = position_data;
    }
    
    
     @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position){
    
            //최초 체크박스 null
        holder.delete_checkbox.setOnCheckedChangeListener(null);

        //체크박스 클릭후 스크롤시 해당 포지션 유지
        holder.checkbox.setChecked(position_data.contains(String.valueOf(position))); 
        
    	holder.checkbox.setOnClickListener(new View.OnClickListener() {
        	 @Override
                public void onClick(View view) {
                    ClickInterface.onClick(String.valueOf(position));//인터페이스 클릭
                }
    	});
    }
    
   
}

 

3.어뎁터 에 매개변수로 해당 ArrayList OR 모델 데이터 받기

 

//최초 체크박스 null
holder.delete_checkbox.setOnCheckedChangeListener(null);

//체크박스 클릭후 스크롤시 해당 포지션 유지
holder.checkbox.setChecked(position_data.contains(String.valueOf(position))); 

 

 

중요하다고 생각하는부분만 긁어와서

 

내용들이 많이 부족합니다.

반응형