如何在回收视图Kotlin中更新数据对象的editText

我是android studio的新手,一个月前才开始学习它。

我目前正在尝试编写包含名称,价格,数量和单位成本的数据类列表的应用程序。 我已经完成了回收视图,并且遇到了这样的问题:每当用户在数据类中输入数量时,如何更新editText值

下面是我的数据类代码

data class food (val food: String,val price: Int,var quantity: Int,var cost: Int = price*quantity)

object ABC {
var food_List = listOf<food>(
    ABC ("A",28,5),ABC ("B",0)
)}   

下面是我的回收视图适配器

class customAdaptor (val context: Context,val food_List:List<food>):RecyclerView.Adapter<customAdaptor.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): ViewHolder {
    val v = LayoutInflater.from(context).inflate(R.layout.list_layout,parent,false)
    return ViewHolder(v)
}

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

override fun onBindViewHolder(holder: ViewHolder,position: Int) {
    val listused=  food_List[position]
    holder.setData(listused,position)
}

inner class ViewHolder (itemView: View): RecyclerView.ViewHolder(itemView) {

    fun setData(listused: food?,pos: Int) {
        itemView.listFoodName.text = listused!!.food
        itemView.listUnitPrice.text =listused.price.toString()
        itemView.listUnitTotalPrice.text=listused.cost.toString()


    }
}}

下面是我的主要活动

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

    val layoutManager = LinearLayoutManager(this)
    layoutManager.orientation = LinearLayoutManager.VERTICAL
    recyclerview.layoutManager = layoutManager


    val adapter = customAdaptor(this,ABC.food_List)
    recyclerview.adapter = adapter}

下面是我的卡片视图布局。

<androidx.cardview.widget.CardView
    android:id="@+id/cardView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="270dp"
            android:layout_height="wrap_content"
            android:textAlignment="center"
            android:id="@+id/listFoodName"/>
        <TextView
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:textAlignment="center"
            android:id="@+id/listUnitPrice"/>
         <EditText
                  android:layout_width="50dp"
                  android:layout_height="wrap_content"
                  android:textAlignment="center"
                  android:inputType="numberDecimal"
                  android:id="@+id/listQuantity"/>
        <TextView
                  android:layout_width="50dp"
                  android:layout_height="wrap_content"
                  android:textAlignment="center"
                  android:id="@+id/listUnitTotalPrice"/> -->

    </LinearLayout>
</androidx.cardview.widget.CardView>

然后我不知道如何为更新编写editText。 请帮忙。非常感谢。

cctvmtv1982 回答:如何在回收视图Kotlin中更新数据对象的editText

您应该使用此:

  

editText.afterTextChanged {doSomethingWithText(it)}

您的代码应类似于:

fun setData(listused: food?,pos: Int) {
    itemView.listFoodName.text =listused!!.food
    itemView.listUnitPrice.text =listused.price.toString()         
    itemView.listUnitTotalPrice.text=listused.cost.toString()
    itemView.listQuantity.afterTextChanged { 
        listused?.quantity = it.toInt()
        itemView.listUnitTotalPrice.text=listused.cost.toString()
    }
}
本文链接:https://www.f2er.com/3098872.html

大家都在问