當我從回應中得到庫存數量為0時,產品不顯示,但產品位置在網格回收器視圖kotlin中顯示空位。我將整個串列傳入配接器,然后通過庫存數量過濾。
class ProductListAdapter(
val productlists: List<Data>,
val context: 語境。
val addCart: AddCartListener
) : RecyclerView.Adapter<ProductListAdapter.ProductListViewHolder>() {
private val TAG = "ProductListAdapter"/span>
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int)。ProductListViewHolder {
var itemView =
LayoutInflater.from(parent.context).inflate(R.layout.product_list, parent, false)
return ProductListViewHolder(itemView)
}
override fun onBindViewHolder( holder: ProductListViewHolder, position: Int) {
val product。資料 = productlists[position]
val variantslist: List<Variant> = product.variants
holder.setIsRecyclable(false)
holder.productname.text = product.name
Glide.with( holder.itemView.context)
.load(product.image)
.進入( holder.productimage)
Log.e(TAG, "onBindViewHolder: " product.variants[0].cart_count)
if (variantslist.get(0). cart_count == 0) {
holder.btn_addcart.visibility = View.VISIBLE
holder.ll_cart.visibility = View.GONE
} else {
holder.btn_addcart.visibility = View.GONE
holder.ll_cart.visibility = View.VISIBLE
holder.tv_cart.text = variantslist.get(0).cart_count.toString()
}
holder.btn_addcart.setOnClickListener {
variantslist.get(0).cart_count = variantslist.get(0).cart_count 1。
addCart.addCart(variantslist.get(0))
notifyDataSetChanged()
}
holder.tv_addcart.setOnClickListener {
variantslist.get(0).cart_count = variantslist.get(0).cart_count 1。
addCart.addCart(variantslist.get(0))
notifyDataSetChanged()
}
holder.tv_removecart.setOnClickListener {
variantslist.get(0).cart_count = variantslist.get(0).cart_count - 1。
addCart.addCart(variantslist.get(0))
notifyDataSetChanged()
}
if (variantslist[0].stock.toInt() > 0) {
holder.mrp.text = "?" "%.2f".format(variantslist[0].price.toDouble()
holder.mrp.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
holder.discountprice.text =
"?" "%.2f".format(variantslist[0].discounted_price.toDouble()
if (variantslist[0].measurement_unit_name == null) {
holder.singlevariant.text = variantslist[0].measurement " pcs"。
holder.multivariant.text = variantslist[0].measurement " pcs"。
} else {
holder.singlevariant.text =
variantslist[0].measurement variantslist[0].measurement_unit_name
holder.multivariant.text =
variantslist[0].measurement variantslist[0].measurement_unit_name
}
} else {
holder.singlelevariant.visibility = View.GONE
holder.multivariant.visibility = View.GONE
holder.mrp.visibility = View.GONE
holder.discountprice.visibility = View.GONE
holder.productCardView.visibility = View.GONE
holder.ProductConstraint.visibility = View.GONE
holder.productimage.visibility = View.GONE
holder.productname.visibility = View.GONE
holder.btn_addcart.visibility = View.GONE
holder.ll_cart.visibility = View.GONE
holder.tv_addcart.visibility = View.GONE
holder.tv_removecart.visibility = View.GONE
holder.tv_cart.visibility = View.GONE
holder.pricediff.visibility = View.GONE
holder.pricedifference.visibility = View.GONE
}
var diffvalue =
((variantslist[0].price.toDouble() - variantslist[0].discounted_price.toDouble() )
var percentage = (diffvalue / variantslist[0] .price.toDouble()) *100
if ( percentage > 3) {
holder.pricediff.visibility = View.VISIBLE
holder.pricedifference.visibility = View.VISIBLE
holder.pricediff.text = percentage.toInt().toString() "%
關閉"
} else {
holder.pricediff.visibility = View.GONE
holder.pricedifference.visibility = View.GONE
}
if (variantslist.size > 1) {
holder.multivariant.visibility = View.VISIBLE
holder.singlevariant.visibility = View.GONE
holder.multivariant.setOnClickListener {
//需要顯示下拉選單。
showCustomDialog(product)
}
} else {
//navigate product details page[/span
holder.singlelevariant.visibility = View.VISIBLE
holder.multivariant.visibility = View.GONE
}
holder.itemView.setOnClickListener {
movefrag(產品)
}
}
open fun getUserId():String? {
val preferences = context.getSharedPreferences(
"userInfo",
活動.MODE_PRIVATE
) //Frequent to get SharedPreferences need to add a step getActivity() method
return preferences.getString("customer_id"/span>, "90336"/span>)
}
fun movefrag(product: Data){
addCart.navFragment(product)
}
fun showCustomDialog(product: Data) {
val dialog = Dialog(context)
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
dialog.setCancelable(false)
dialog.setContentView(R.layout.dialog_listview)
val btndialog: Button = dialog.findViewById(R.id.btndialog) as Button
btndialog.setOnClickListener { dialog.dismiss() }
val listView: ListView = dialog.findViewById(R.id.listview) as ListView
val adapter = VariantAdapter(context, product, addCart)
listView.adapter = adapter
listView.setOnItemClickListener(AdapterView.OnItemClickListener { parent, view, position, id ->
Log.e(TAG, "showCustomDialog: " adapter.getItem(position))
dialog.dismiss()
})
dialog.setCanceledOnTouchOutside(true)
dialog.show()
}
override fun getItemCount(): Int {
return productlists.size
}
class ProductListViewHolder( itemView: View) : RecyclerView.ViewHolder( itemView) {
var productimage: ImageView
var productname: TextView
var mrp: 文本視圖
var discountprice: 折扣價格: TextView
var btn_addcart: 文本視圖
var ll_cart: LinearLayout
var tv_addcart: 文本視圖
var tv_removecart: 文本視圖
var tv_cart: 文本視圖
var multivariant: 文本視圖
var singlevariant: 文本視圖
var pricediff: 文本視圖
var pricedifference: 影像視圖
var productCardView: 卡片視圖
var ProductConstraint: 限制性布局
init {
productimage = itemView.productimage
productname = itemView.productname
mrp = itemView.mrp
discountprice = itemView.Discountprice
btn_addcart = itemView.btn_addcart
ll_cart = itemView.ll_cart
tv_addcart = itemView.tv_addcart
tv_removecart = itemView.tv_removecart
tv_cart = itemView.tv_cart
multivariant = itemView.multivariant
singlevariant = itemView.singlevariant
pricediff = itemView.pricediff
pricedifference = itemView.pricedifference
productCardView = itemView.productcardview
ProductConstraint = itemView.productconstraint
}
}
}
。
這就是片段代碼
private fun getpopular() {
LoadingUtils.showDialog(context, false)
username = getUserId()
val retrofitBuilder = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_L)
.build()
.create(ApiInterface::class.java)
val retrofitData = retrofitBuilder.getpopularproductitems(90336, username!)
retrofitData.enqueue(object : Callback< productlist> {
override fun onResponse(呼叫。Call<productlist>, response: Response<productlist>) {
Log.e("最新", "res-" response.body())
val responsebody: productlist = response.body()!
LoadingUtils.hideDialog()
popularadapter = popularproductAdapter(frag, responsebody.data, addCart)
popularadapter.notifyDataSetChanged()
linearLayoutManager = LinearLayoutManager(context)
popularproductsRView.adapter = popularadapter
}
override fun onFailure(呼叫。Call<productlist> , t: Throwable) {
Log.d("MainError"/span>, "onFailure: " t.message)
LoadingUtils.hideDialog()
}
})
}
uj5u.com熱心網友回復:
我正在考慮productlist類,如下:
data class productlist(val uid。Int, val data: List<BasicTimer>,...)
而你的Data類是這樣的:
data class Data(val uid。Int, var stock_count: Int, ...)
首先要改變productlist類中的變數data的名稱,因為它是Kotlin的一個關鍵字。
現在在retrofitData.enqueue()中過濾那些確實有stock_count > 0
替換下面這一行 :
popularadapter = popularproductAdapter(frag, responsebody.data, addCart)
與:
popularadapter = popularproductAdapter(frag, responsebody.data.filter{it.stock_count > 0},adcart)
這將不會把stock_count = 0的物件發送到RecyclerView進行渲染。
更好的選擇是在RecyclerView中使用ViewModel,這樣你就可以觀察到資料在初始運行后是否有變化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/318404.html
標籤:
