我想要實作的是在單擊按鈕時將資料從自定義回收視圖配接器發送到活動。更具體地說,我想發送一個整數值。
回收配接器代碼
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
}
謝謝
uj5u.com熱心網友回復:
首先創建一個界面,如OnItemClickValue:
interface OnItemClickValue {
fun onValueChange(value: Int)
}
并通過配接器并onValueChange()從 onClick呼叫方法:
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
}
}
}
}
OnItemClickValue在 Activity 上實作介面:
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")
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/401985.html
