【Android】RecyclerView+RadioButtonの作成
Mainレイアウト作成
RecyclerViewの配置
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/view_item" />
</androidx.constraintlayout.widget.ConstraintLayout>
アイテム作成
RadioButtonを配置
view_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="1" />
Adapter作成
RecyclerView用のAdapter作成。
どのボタンを選択しているかを表す変数checkPosition
を作成し、onBindViewHolder
関数内でボタンタップ時にnotifyDataSetChanged()
を呼び出すのがポイント。
ItemAdapter.kt
class ItemAdapter(private val items: List<String>) :
RecyclerView.Adapter<ItemAdapter.ViewHolder>() {
private var checkPosition = -1
class ViewHolder(val binding: ViewItemBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
ViewHolder(ViewItemBinding.inflate(LayoutInflater.from(parent.context), parent, false))
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.binding.button.text = items[position]
holder.binding.button.isChecked = position == checkPosition
holder.binding.button.setOnClickListener {
checkPosition = position
notifyDataSetChanged()
}
}
override fun getItemCount() = items.size
}
MainActivityの作成
先ほど作成したAdapterをセット
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
binding.recyclerView.adapter = ItemAdapter((1..20).map { it.toString() })
setContentView(binding.root)
}
}
Author And Source
この問題について(【Android】RecyclerView+RadioButtonの作成), 我々は、より多くの情報をここで見つけました https://qiita.com/nakashimaakio/items/1dba6470d2053f0cc615著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .