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