kotlin android中的setOnLongClickListener

Posted

技术标签:

【中文标题】kotlin android中的setOnLongClickListener【英文标题】:setOnLongClickListener in kotlin android 【发布时间】:2018-01-28 17:20:13 【问题描述】:

如何在我的ListView 中的每个项目中使用setOnClickListener

我的 xml:

<ListView
    android:id="@+id/tv1"
    android:layout_
    android:layout_>

</ListView>

【问题讨论】:

【参考方案1】:

在您的 kotlin 活动中:

override fun onCreate(savedInstanceState: Bundle?) 
  val listView: ListView = findViewById(R.id.yourListViewId)
  listView.onItemClickListener = AdapterView.OnItemClickListener  adapterView, view, i, l -> 
    //YOUR CODE HERE
  

【讨论】:

他要了每一件物品 我想要每个项目 onItemClickListener 是针对每个项目的。方法中的变量“i”是每个项目的位置。您只需使用 yourItemList.get(i) 来检索要使用的项目。这是推荐的方法。您也可以在适配器中使用 OnClickListener,但这会增加内存使用量。 当我在适配器中使用此方法时,它不起作用。如果它在适配器中不起作用,我可以在哪里使用它?? 您必须在引用列表视图的活动中使用它。简而言之,您正在使用ListView listView=(ListView)findviewById(R.id.tv1) 【参考方案2】:

晚会比什么都好。我们发布此答案是因为我们在 RecyclerAdapter 中设置 OnLongClickListener 时遇到了困难,因为当您输入代码时,如果在开始语句和 return 之间添加代码行之前不包含 RETURN 值,编译器会抱怨并且人们会认为他们只是错了这里是一个小代码希望它可以帮助任何新的 OnLongClickListener

class PersonRecyclerAdapter(contactList: List<Contact>, internal var context: Context) : RecyclerView.Adapter<PersonRecyclerAdapter.ViewHolder>() 

private var contactList: List<Contact> = ArrayList()
init  this.contactList = contactList 

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


override fun getItemCount(): Int 
    return contactList.size


override fun onBindViewHolder(holder: ViewHolder, position: Int) 
    val items = contactList[position]
    holder.item.text = items.name

    holder.bindCheckBox()
    // This code calls the function below in the inner class
    // too much code manipulation

    holder.list_new_card.setOnLongClickListener  view ->
        holder.ckBox.isChecked = false
        holder.ckBox.isEnabled = true
        holder.item.text = items.name
        true

    
    /*holder.list_new_card.setOnClickListener 

        holder.ckBox.isChecked = false
        holder.ckBox.isEnabled = true
        holder.item.text = items.name

        //val i = Intent(context, MainActivity::class.java)
        //i.putExtra("Mode", "E")
        //i.putExtra("Id", items.id)
        //i.putExtra("ET",items.name)
        //i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
        //context.startActivity(i)
        // This code attaches a listener to the tvName in the new_single_card.xml
    */

    holder.editCLICK.setOnClickListener 
        val i = Intent(context, MainActivity::class.java)
        i.putExtra("FROM", "U")
        i.putExtra("MainActId",items.id)
        i.putExtra("ET",items.name)
        i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
        context.startActivity(i)
    



inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) 

    var item: TextView = view.findViewById(R.id.tvName) as TextView
    var list_new_card: CardView = view.findViewById(R.id.list_new_card) as CardView
    var editCLICK: RelativeLayout = view.findViewById(R.id.editCLICK) as RelativeLayout
    var ckBox:CheckBox = view.findViewById(R.id.ckBox)as CheckBox
    // This is how you declare a instance of the Widiget you want to work with

    fun bindCheckBox()// Create function and BIND it in the onBindViewHolder function

        ckBox.setOnCheckedChangeListener  view,isChecked ->
            if(ckBox.isChecked)
                item.visibility = View.VISIBLE
                item.setTextColor(Color.parseColor("#FF0000"))
                item.text = "Click & HOLD Me to View Item"
                ckBox.isEnabled = false

            else
            item.setTextColor(Color.parseColor("#000000"))
        
    

注意在 RecyclerAdapter 中包含侦听器的不同方法

【讨论】:

以上是关于kotlin android中的setOnLongClickListener的主要内容,如果未能解决你的问题,请参考以下文章

android 11 kotlin 中的包可见性

如何在 Android (Kotlin) 中的 onSuccessListener 之外分配位置坐标?

如何使用 Kotlin 在 android 中的 BottomNavigationView 上设置 OnNavigationItemListener?

Kotlin android中的RecyclerView itemClickListener

Xamarin 是不是支持 Xamarin Android 绑定库中的 Kotlin 协程?

Kotlin 在 Android 开发中的 16 个建议