用Kotlin实现Android点击事件3种方法

在android中,点击事件大致分为三种写法:

  1. 匿名内部类。
  2. Activity实现全局OnClickListener接口。
  3. 指定xml的onClick属性。
    今天用Kotlin实现这三种方式实现点击事件
    匿名内部类:这种方式最简单
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        bt_click.setOnClickListener {
            Toast.makeText(this,"点击了",Toast.LENGTH_SHORT).show();
        }
    }

这里不需要new OnClicklistener。

全局实现OnClickListener接口:

class MainActivity : AppCompatActivity(), View.OnClickListener {
    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.bt_click ->
                Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()
        }
    }
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    bt_click.setOnClickListener(this)
}

}
这种方法与java的区别是没有implements关键字表示实现接口。
when就相当于java中的switch。
“:”符号改为了“->”。

指定onClick属性:

fun click(v: View?) {
        when (v?.id) {
            R.id.bt_click ->
                Toast.makeText(this, "点击了", Toast.LENGTH_SHORT).show()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
<Button
        android:id="@+id/bt_click"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:onClick="click"
        android:text="点击" />
好的,下面是一个使用Kotlin实现Android收藏的简单示例: 1. 创建一个名为“FavoriteItem”的数据类,用于存储收藏项的信息,比如收藏项的ID、名称、图片等。 ```kotlin data class FavoriteItem(val id: Int, val name: String, val imageUrl: String) ``` 2. 创建一个名为“FavoriteAdapter”的RecyclerView适配器,用于显示收藏列表。 ```kotlin class FavoriteAdapter(private val favoriteItems: List<FavoriteItem>) : RecyclerView.Adapter<FavoriteAdapter.ViewHolder>() { // 创建ViewHolder并绑定布局 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.favorite_item, parent, false) return ViewHolder(view) } // 获取列表项总数 override fun getItemCount() = favoriteItems.size // 绑定数据到ViewHolder override fun onBindViewHolder(holder: ViewHolder, position: Int) { val favoriteItem = favoriteItems[position] holder.nameView.text = favoriteItem.name // 加载图片等操作 } // ViewHolder类 class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val nameView: TextView = itemView.findViewById(R.id.name) // 其他控件等 } } ``` 3. 在Activity或Fragment中获取收藏列表数据,构建适配器并设置给RecyclerView。 ```kotlin val favoriteItems = listOf( FavoriteItem(1, "收藏项1", "http://image.url/1.jpg"), FavoriteItem(2, "收藏项2", "http://image.url/2.jpg"), FavoriteItem(3, "收藏项3", "http://image.url/3.jpg"), // 更多收藏项... ) val recyclerView = findViewById<RecyclerView>(R.id.recyclerView) recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.adapter = FavoriteAdapter(favoriteItems) ``` 4. 在用户点击收藏按钮时,将收藏项添加到收藏列表中。 ```kotlin // 在收藏按钮的点击事件中调用该方法 fun addToFavorites(id: Int, name: String, imageUrl: String) { val favoriteItem = FavoriteItem(id, name, imageUrl) favoriteItems.add(favoriteItem) favoriteAdapter.notifyDataSetChanged() } ``` 以上是一个简单的收藏功能实现示例,你可以根据实际需求进行修改和扩展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值