Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在一个布局中的适配器之间传递数据_Android_Kotlin - Fatal编程技术网

Android 在一个布局中的适配器之间传递数据

Android 在一个布局中的适配器之间传递数据,android,kotlin,Android,Kotlin,我是kotlin的初学者,我可以在一个布局中传递数据或项目吗 这是第一个适配器代码 class KasirAdapter( private var productItemModelList: ArrayList<DataX>, private val kasirInterface: KasirInterface ) : RecyclerView.Adapter<KasirAdapter.ItemsAdapterVH>(), Filterable {

我是kotlin的初学者,我可以在一个布局中传递数据或项目吗

这是第一个适配器代码

class KasirAdapter(
    private var productItemModelList: ArrayList<DataX>,
    private val kasirInterface: KasirInterface
) : RecyclerView.Adapter<KasirAdapter.ItemsAdapterVH>(), Filterable {

    var produkList = ArrayList<DataX>()
    init {
        produkList = productItemModelList
    }

    class ItemsAdapterVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
        private var counterItem : Int = 0

        fun bind(
            data: DataX?,
            kasirInterface : KasirInterface
        ) {

            itemView.setOnClickListener {
                if (data != null) {
                    if (counterItem >= data.stock) return@setOnClickListener
                    counterItem++
                    kasirInterface.addItem(data)
                }
            }

            itemView.setOnClickListener {
                if (data != null) {
                    if (counterItem <= data.stock) return@setOnClickListener
                    counterItem--
                    kasirInterface.removeItem(data)
                }
            }

            itemView.namaMakanan.text = data?.name
            itemView.kategoriMakanan.text = data?.category?.name
            itemView.txt_hargaProduk.text = formatUang(data?.harga_jual?.toDouble(),true)
            try {
                Picasso.get()
                    .load(data?.image_path?.replace("public", "http://127.0.0.1:8000/storage"))
                    .placeholder(R.drawable.ic_launcher_background)
                    .into(itemView.img_produkKategori)
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemsAdapterVH {
        return ItemsAdapterVH(
            LayoutInflater.from(parent.context).inflate(R.layout.item_cashier_produk, parent, false)
        )
    }

    override fun getItemCount(): Int = produkList.size

    override fun onBindViewHolder(holder: ItemsAdapterVH, position: Int) {
        holder.itemView.namaMakanan.text = produkList[position].toString()
        holder.itemView.kategoriMakanan.text = produkList[position].toString()
        holder.bind(productItemModelList[position], kasirInterface)
    }

    interface KasirInterface {
        fun addItem(data: DataX?)
        fun removeItem(data: DataX?)
    }

    @Suppress("UNCHECKED_CAST")
    override fun getFilter(): Filter {
        return object : Filter() {
            override fun performFiltering(constraint: CharSequence?): FilterResults {
                val charSearch = constraint.toString()
                produkList = if (charSearch.isEmpty()) {
                    productItemModelList
                } else {
                    val resultList = ArrayList<DataX>()
                    for (row in productItemModelList) {
                        if (row.category.name.toLowerCase(Locale.ROOT).contains(charSearch.toLowerCase(Locale.ROOT))) {
                            resultList.add(row)
                        }
                    }
                    resultList
                }
                val filterResults = FilterResults()
                filterResults.values = produkList
                return filterResults
            }

            override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
                produkList = results?.values as ArrayList<DataX>
                notifyDataSetChanged()
            }
        }
    }
}
class PostProdukKasirAdapter(private var postProdukItemList: ArrayList<String>
): RecyclerView.Adapter<PostProdukKasirAdapter.PprodukItemsVH>() {

    private var postProdukList = ArrayList<String>()
    init {
        postProdukList = postProdukItemList
    }

    class PprodukItemsVH(itemView : View) : RecyclerView.ViewHolder(itemView) {
    }

    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int
    ): PprodukItemsVH {
        return PprodukItemsVH (
            LayoutInflater.from(parent.context).inflate(R.layout.item_post_product, parent, false)
            )
    }

    override fun getItemCount(): Int = postProdukList.size

    override fun onBindViewHolder(holder: PostProdukKasirAdapter.PprodukItemsVH, position: Int) {
    }}
类KasiraAdapter( 私有var productItemModelList:ArrayList, 私人val kasirInterface:kasirInterface ):RecyclerView.Adapter(),可筛选{ var produkList=ArrayList() 初始化{ produkList=productItemModelList } 类ItemsAdapterVH(itemView:View):RecyclerView.ViewHolder(itemView){ 私有变量计数器项:Int=0 有趣的绑定( 数据:DataX?, kasirInterface:kasirInterface ) { itemView.setOnClickListener{ 如果(数据!=null){ 如果(计数器项>=data.stock)return@setOnClickListener 反项++ kasirInterface.addItem(数据) } } itemView.setOnClickListener{ 如果(数据!=null){ 如果(反项) data.stock=20 } val produkAdapter=KasiraAdapter( 作为ArrayList, 对象:KasirAdapter.KasirInterface{ 覆盖有趣的附加项(数据:DataX?){ 总计项目++ totalHarga+=数据!!.harga_-jual } 覆盖fun removeItem(数据:DataX?){ 总计项目-- totalHarga-=数据!!.harga_-jual } }) rv_kasir_produk.adapter=produk适配器 produkAdapter.notifyDataSetChanged() } } } } } }) } 私人娱乐getMenuKategoriData(){ 更新client.instance.kasirKategoriProduk(令牌) .enqueue(对象:回调{ 覆盖响应( 呼叫:呼叫,, 答复:答复 ) { 打电话{ if(response.issucessful){ 检查进度() response.body()?.data?.data.let{ 如果(it!=null){ val menuKategoriAdapter= MenuKategoriAdapter(它作为ArrayList) rv_menuKategori.adapter=menuKategoriAdapter menuKategoriAdapter.notifyDataSetChanged() } } } } } 覆盖失效时的乐趣(调用:调用,t:可丢弃){ Toast.makeText( this@KasirActivity, “Gagal Menampilkan数据菜单Kategori”, 吐司长度 ).show() t、 printStackTrace() } }) } 私人娱乐进展(){ 取得进展++ 如果(getProgress>=2)progressHelper?.hideProgress()为 }}
class KasirActivity : AppCompatActivity() {

    private var getProgress: Int = 0
    private var spanCount: Int = 0
    private var totalHarga: Int = 0
    private var totalItems: Int = 0
    private var token: String? = null
    private var progressHelper: ProgressHelper? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kasir)
        supportActionBar?.title = "Kasir"

        sv_kasirkita.queryHint = "Search for food, drink or etc."

        val sharedPreferences = SharedPreferences(this)
        token = "Bearer " + sharedPreferences.getString(Constant.AUTH_TOKEN)

        getProdukKasirData()
        getMenuKategoriData()

        txt_date_year.text = getCurrentDate(DateFormat.COMPLETE_DATE)

    }

    private fun getProdukKasirData() {
        RetrofitClient.instance.semuaproduk(token)
            .enqueue(object : Callback<ProdukModel> {
                override fun onFailure(call: Call<ProdukModel>, t: Throwable) {
                    Toast.makeText(
                        this@KasirActivity,
                        "Gagal Menampilkan Data Produk",
                        Toast.LENGTH_SHORT
                    )
                        .show()
                    t.printStackTrace()
                }

                override fun onResponse(
                    call: Call<ProdukModel>,
                    response: Response<ProdukModel>
                ) {
                    call.let {
                        if (response.isSuccessful) {
                            checkProgress()
                            response.body()?.data?.data.let {
                                if (it != null) {
                                    it.forEach { data ->
                                        data.stock = 20
                                    }

                                    val produkAdapter = KasirAdapter(
                                        it as ArrayList<DataX>,
                                    object : KasirAdapter.KasirInterface {
                                        override fun addItem(data: DataX?) {
                                            totalItems++
                                            totalHarga += data!!.harga_jual
                                        }

                                        override fun removeItem(data: DataX?) {
                                            totalItems--
                                            totalHarga -= data!!.harga_jual
                                        }

                                    })
                                    rv_kasir_produk.adapter = produkAdapter
                                    produkAdapter.notifyDataSetChanged()
                                }
                            }
                        }
                    }
                }
            })
    }

    private fun getMenuKategoriData() {
        RetrofitClient.instance.kasirKategoriProduk(token)
            .enqueue(object : Callback<CashierCategoriesModel> {
                override fun onResponse(
                    call: Call<CashierCategoriesModel>,
                    response: Response<CashierCategoriesModel>
                ) {
                    call.let {
                        if (response.isSuccessful) {
                            checkProgress()
                            response.body()?.data?.data.let {
                                if (it != null) {
                                    val menuKategoriAdapter =
                                        MenuKategoriAdapter(it as ArrayList<com.badadarr.kasirkitaapps.api.KasirKategoriModel.DataX>)
                                    rv_menuKategori.adapter = menuKategoriAdapter
                                    menuKategoriAdapter.notifyDataSetChanged()
                                }
                            }
                        }
                    }
                }

                override fun onFailure(call: Call<CashierCategoriesModel>, t: Throwable) {
                    Toast.makeText(
                        this@KasirActivity,
                        "Gagal Menampilkan Data Menu Kategori",
                        Toast.LENGTH_SHORT
                    ).show()
                    t.printStackTrace()
                }
            })
    }

    private fun checkProgress() {
        getProgress++
        if (getProgress >= 2) progressHelper?.hideProgress()
    }}