RecyclerView 实现一百个格子进度 (kotlin)
时间: 2023-09-01 15:10:59 浏览: 157
好的,以下是使用 Kotlin 实现 RecyclerView 实现一百个格子进度的代码示例:
1. 首先,在布局文件中添加 RecyclerView:
```xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
```
2. 创建一个数据类来存储每个格子的状态:
```kotlin
data class ProgressItem(var status: Boolean = false)
```
3. 创建一个 Adapter 类来绑定数据和视图:
```kotlin
class ProgressAdapter(private val itemList: List<ProgressItem>) :
RecyclerView.Adapter<ProgressAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_progress, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
if (itemList[position].status) {
holder.itemView.setBackgroundColor(Color.GREEN)
} else {
holder.itemView.setBackgroundColor(Color.GRAY)
}
}
override fun getItemCount(): Int {
return itemList.size
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
```
4. 创建一个布局文件来显示每个格子:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/colorGray">
<View
android:id="@+id/viewProgress"
android:layout_width="wrap_content"
android:layout_height="10dp"
android:layout_centerVertical="true"
android:layout_margin="2dp"
android:background="@color/colorGreen" />
</RelativeLayout>
```
5. 在 Activity 或 Fragment 中初始化 RecyclerView 和 Adapter:
```kotlin
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
val itemList = ArrayList<ProgressItem>()
for (i in 1..100) {
itemList.add(ProgressItem())
}
val adapter = ProgressAdapter(itemList)
recyclerView.adapter = adapter
recyclerView.layoutManager = GridLayoutManager(this, 10)
```
6. 在需要更新进度的地方,更新对应的数据并刷新 RecyclerView:
```kotlin
itemList[position].status = true
adapter.notifyItemChanged(position)
```
这样,就可以实现一百个格子进度的界面了。
阅读全文