이번 시간에는 RecyclerView를 이용해서
라디오 버튼 리스트 만드는 방법을 알아보겠습니다.
public interface ItemClickListener {
void onClick(String s);
}
2021.12.31 - [안드로이드] - [안드로이드 스튜디오] 자바 클래스 생성하는 방법
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/radio_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="12dp"
android:textSize="18sp">
</RadioButton>
2022.01.01 - [안드로이드] - [안드로이드 스튜디오] 레이아웃 추가하는 방법
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder>{
ArrayList<String> arrayList;
ItemClickListener itemClickListener;
int selectedPosition = -1;
public ItemAdapter(ArrayList<String> arrayList, ItemClickListener itemClickListener) {
this.arrayList = arrayList;
this.itemClickListener = itemClickListener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
//라디오버튼 텍스트 설정
holder.rb.setText(arrayList.get(position));
//라디오버튼 체크 설정
holder.rb.setChecked(position == selectedPosition);
holder.rb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b){
//선택한 값 변수에 담기
selectedPosition = holder.getAdapterPosition();
//클릭이벤트
itemClickListener.onClick(holder.rb.getText().toString());
}
}
});
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
RadioButton rb;
public ViewHolder(@NonNull View itemView) {
super(itemView);
rb = itemView.findViewById(R.id.radio_button);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/list_item" />
</RelativeLayout>
- 설명 -
1. 인터페이스 ItemClickListener에 있는 onClick메서드를
구현하여 그룹 라디오 버튼 효과를 준다.
public class MainActivity extends AppCompatActivity {
//선언
RecyclerView recyclerView;
ItemClickListener itemClickListener;
ItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//변수에 담기
recyclerView = findViewById(R.id.recyclerView);
//리스트
ArrayList<String> arrayList = new ArrayList<>();
//데이터 생성
for(int i = 0; i < 10; i++){
arrayList.add("RB " + i);
}
itemClickListener = new ItemClickListener() {
@Override
public void onClick(String s) {
recyclerView.post(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
Toast.makeText(MainActivity.this, "selected: " + s,
Toast.LENGTH_SHORT).show();
}
};
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new ItemAdapter(arrayList, itemClickListener);
recyclerView.setAdapter(adapter);
}
}//MainActivity
2022.03.30 - [안드로이드] - [안드로이드] 야구게임 만드는 방법 part1 - 화면 구성 및 랜덤 숫자 생성
[안드로이드] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기& 보여주기 (0) | 2022.04.03 |
---|---|
[안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면구성 (0) | 2022.04.02 |
[안드로이드] 야구게임 만드는 방법 part2 - 기능구현 (0) | 2022.03.31 |
[안드로이드] 야구게임 만드는 방법 part1 - 화면구성 및 랜덤숫자 생성 (0) | 2022.03.30 |
[안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part2 - 기능 구현 (0) | 2022.03.29 |
댓글 영역