簡體   English   中英

單擊按鈕時將數據從 RecyclerView 適配器發送到 Activity

[英]Send data from RecyclerView Adapter to Activity on button click

我想要實現的是在單擊按鈕時將數據從自定義回收視圖適配器發送到活動。 更具體地說,我想發送一個 integer 值。

回收適配器代碼

class RecyclerAdapter(ingredientsList: MutableList<String>) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>()
{

private var ingredients : MutableList<String> = ingredientsList

private var testInt : Int = 0
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val v = LayoutInflater.from(parent.context).inflate(R.layout.lv_view_item,parent,false)
    return ViewHolder(v,)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.pName.text = ingredients[position]

    var ingrCount : TextView = holder.itemView.findViewById(R.id.ingredientCount)
    var decrementIngr : Button = holder.itemView.findViewById(R.id.deleteIngeredient)

    var incrementIngr : Button = holder.itemView.findViewById(R.id.addIngredient)
    incrementIngr.setOnClickListener{
        val count = Integer.parseInt(ingrCount.text.toString()) + 1
        ingrCount.text = "$count"
        testInt = count

        Log.w("w", testInt.toString())

    }
    decrementIngr.setOnClickListener{
        val count = Integer.parseInt(ingrCount.text.toString()) - 1
        ingrCount.text = "$count"
        testInt = count

        Log.w("w", testInt.toString())
    }
}

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

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
{
    var pName : TextView = itemView.findViewById(R.id.ingredientName)

    init {

        itemView.setOnClickListener{
            val position : Int = adapterPosition
        }
    }

}

}

在我的活動中,我想在單擊按鈕時獲取 testInt 變量。

btn_create_order.setOnClickListener{
    //somehow get the data
}

謝謝

首先創建一個類似OnItemClickValue的接口:

interface OnItemClickValue {
    fun onValueChange(value: Int)
}

並通過 Adapter 並從 onClick 調用onValueChange()方法:

class RecyclerAdapter(ingredientsList: MutableList<String>, val onItemClickValue:OnItemClickValue) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>()
{

    private var ingredients : MutableList<String> = ingredientsList

    private var testInt : Int = 0
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.lv_view_item,parent,false)
        return ViewHolder(v,)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.pName.text = ingredients[position]

        var ingrCount : TextView = holder.itemView.findViewById(R.id.ingredientCount)
        var decrementIngr : Button = holder.itemView.findViewById(R.id.deleteIngeredient)

        var incrementIngr : Button = holder.itemView.findViewById(R.id.addIngredient)
        incrementIngr.setOnClickListener{
            val count = Integer.parseInt(ingrCount.text.toString()) + 1
            ingrCount.text = "$count"
            testInt = count
            onItemClickValue.onValueChange(testInt)
            Log.w("w", testInt.toString())

        }
        decrementIngr.setOnClickListener{
            val count = Integer.parseInt(ingrCount.text.toString()) - 1
            ingrCount.text = "$count"
            testInt = count
            onItemClickValue.onValueChange(testInt)
            Log.w("w", testInt.toString())
        }
    }

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

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
    {
        var pName : TextView = itemView.findViewById(R.id.ingredientName)

        init {

            itemView.setOnClickListener{
                val position : Int = adapterPosition
            }
        }

    }

}

在Activity上實現OnItemClickValue接口:

class MainActivity: AppCompatActivity(), OnItemClickValue{
    var testInt:Int = 0
    override fun onValueChange(value: Int) {
        testInt = value
    }

    btn_create_order.setOnClickListener{
        //You will get testInt from here

        Log.d("TAG", "testInt $testInt")
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM