以下是使用Kotlin创建带搜索框的RecyclerView示例代码:

  1. 创建RecyclerView布局文件

在res/layout目录下创建一个名为item_layout.xml的布局文件,用于定义RecyclerView的每个列表项的样式。以下是示例代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/tvDescription"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"/>

</LinearLayout>
  1. 创建搜索框布局文件

在res/layout目录下创建一个名为search_layout.xml的布局文件,用于定义搜索框的样式。以下是示例代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/etSearch"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:hint="Search"/>

    <Button
        android:id="@+id/btnSearch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Search"/>

</LinearLayout>
  1. 创建RecyclerView适配器

创建一个名为MyAdapter的类,继承自RecyclerView.Adapter,并实现onCreateViewHolder、onBindViewHolder和getItemCount方法。以下是示例代码:

class MyAdapter(private val itemList: ArrayList<Item>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = itemList[position]
        holder.tvTitle.text = item.title
        holder.tvDescription.text = item.description
    }

    override fun getItemCount(): Int {
        return itemList.size
    }

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val tvTitle: TextView = itemView.findViewById(R.id.tvTitle)
        val tvDescription: TextView = itemView.findViewById(R.id.tvDescription)
    }
}
  1. 创建Activity

创建一个名为MainActivity的Activity,并在布局文件中添加RecyclerView和搜索框。在MainActivity的onCreate方法中,初始化RecyclerView和搜索框,并设置搜索框的点击事件。以下是示例代码:

class MainActivity : AppCompatActivity() {

    private lateinit var recyclerView: RecyclerView
    private lateinit var adapter: MyAdapter
    private lateinit var itemList: ArrayList<Item>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 初始化RecyclerView
        recyclerView = findViewById(R.id.recyclerView)
        recyclerView.layoutManager = LinearLayoutManager(this)
        itemList = ArrayList()
        adapter = MyAdapter(itemList)
        recyclerView.adapter = adapter

        // 初始化搜索框
        val etSearch: EditText = findViewById(R.id.etSearch)
        val btnSearch: Button = findViewById(R.id.btnSearch)
        btnSearch.setOnClickListener {
            val searchQuery = etSearch.text.toString()
            searchItems(searchQuery)
        }

        // 添加默认数据项
        itemList.add(Item("Item 1", "Description 1"))
        itemList.add(Item("Item 2", "Description 2"))
        itemList.add(Item("Item 3", "Description 3"))
        itemList.add(Item("Item 4", "Description 4"))
        itemList.add(Item("Item 5", "Description 5"))
        adapter.notifyDataSetChanged()
    }

    private fun searchItems(query: String) {
        val filteredList = ArrayList<Item>()
        for (item in itemList) {
            if (item.title.toLowerCase().contains(query.toLowerCase())) {
                filteredList.add(item)
            }
        }
        adapter.itemList = filteredList
        adapter.notifyDataSetChanged()
    }

    data class Item(val title: String, val description: String)
}

在MainActivity的searchItems方法中,根据搜索框的内容过滤数据项,并更新RecyclerView的适配器。

  1. 运行应用程序

运行应用程序,可以看到具有搜索框的RecyclerView,可以通过输入搜索查询来过滤数据列表。

帮我用kotlin生成一个带搜索框的recyclerview

原文地址: https://www.cveoy.top/t/topic/bnxW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录