먼저 지역데이터를 준비하시고 라디오 버튼을 그려넣으세요. 지역데이터는 고정된 리스트이므로 enum을 사용하겠습니다.
public enum Sido {
SEOUL("서울),
ULSAN("울산"),
...
JEJU("제주");
private final String label;
public Sido(String label) {
this.label = label;
}
public String getLabel() {
return this.label;
}
}
라디오그룹에 시도 라디오 버튼을 생성합니다. 라디오버튼을 누를 때 리스트뷰에 필요한 시도데이터를 가져와서 보여주는 코드를구현하시면 됩니다. 동적으로 라디오버튼을 생성하지 않고 XML에 만들어질 걸 사용하시련 rG에서 라디오버튼을 찾아 View.OnClickListener를 설정하면 됩니다.
private sidoClickListener new View.OnClickListner() {
@Override
public void onClick(View view) {
Sido sido = sidoButtons.get(view);
updateSidoDataBySido(sido); //구현
}
});
// 라디오버튼 동적생성
Map<Sido, View> sidoButtons = new HashMap<>();
for (Sido sido : Sido.values()) {
RadioButton button = new RadioButton(rG.getContext());
button.setText(sido.getLabel()):
button.setOnClickListener(sidoClickListener);
rG.addView(button);
sidoButtons.put(sido, button);
}
/* XML에 존재하는 라디오 버튼 찾기. 이 방법을 사용하면 sidoButtons를 매핑하는 방법이 바뀌야 겠죠.
for (int i = 0; i < rG.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof RadioButton) {
RadioButton button = (RadioButton) child;
button.setOnClickListener(sidoClickListener);
}
}
*/
updateSidioDataBySido 메소드를 구현합니다. 구체적인 코드는 님이 아실 것이므로 채워넣으시면 됩니다.
private void updateSidoDataBySido(Sido sido) {
items = // TODO : 필요한 시도데이터를 가져온다.
adapter.setItems(items); // setItems가 notifyDataSetChanges를 호출하도록 함.
}