【发布时间】:2019-10-03 10:36:32
【问题描述】:
编程语言:KOTLIN
库:androidX
我在 Kotlin 中使用来自 AndroidX 库的 RecyclerView,但出现了一个问题。
问题:当我点击第一个显示项目时,更多项目会受到影响,总是在 10 个项目之后。
示例:如果单击第一个项目,则项目 1、11、21,31 也会受到影响。
这里是代码
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import com.jdwebservices.mybigbachat.R
import com.jdwebservices.mybigbachat.data.products
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.product_row.view.*
import kotlin.collections.ArrayList
class product_adapter(var contet:Context, var catlist: ArrayList<products>): RecyclerView.Adapter<RecyclerView.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val v:View=LayoutInflater.from(contet).inflate(R.layout.product_row,parent,false)
return clientHolders(v)
}
override fun getItemCount(): Int {
return catlist.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
holder.itemView.setOnClickListener { }
(holder as clientHolders).bind(
catlist[position].product_name_app_english,
catlist[position].product_image,
catlist[position].mrp,
catlist[position].sale_rate,
position
)
}
class clientHolders(itemView: View): RecyclerView.ViewHolder(itemView)
{
val BASE_URL = "https://mybachatbasket.xyz/"
var counter = -1
fun bind(
product_name_app_english: String,
product_image: String,
mrp: Int,
sale_rate: Int,
products: Int
) {
if (counter == -1) {
itemView.add_1.visibility = View.VISIBLE
itemView.add_to_cart.visibility = View.GONE
}
var pos = adapterPosition
if(pos == products){
itemView.product_name.text = product_name_app_english
itemView.mrp_full.visibility = View.VISIBLE
itemView.mrp.text = mrp.toString()
itemView.sale_rate.text = sale_rate.toString()
var eb: String = BASE_URL + "admin/resource/uploads/" + product_image
eb = eb.replace(" ", "%20")
Picasso.get().load(eb).into(itemView.product_image)
itemView.add_1.setOnClickListener {
counter = 1
Toast.makeText(itemView.context, pos.toString(),Toast.LENGTH_LONG).show()
// Toast.makeText(itemView.context, products.toString(), Toast.LENGTH_LONG).show()
// add_cart(product_id,category_id,counter)
if (pos >= 0) {
itemView.add_1.visibility = View.GONE
itemView.add_to_cart.visibility = View.VISIBLE
itemView.count.text = counter.toString()
}else{
itemView.add_1.visibility = View.VISIBLE
itemView.add_to_cart.visibility = View.GONE
}
}
itemView.add.setOnClickListener {
counter++
itemView.count.text = counter.toString()
}
itemView.delete.setOnClickListener {
counter--
itemView.count.text = counter.toString()
// updtae_cart(last_id,counter);
if (counter == 0) {
itemView.add_1.visibility = View.VISIBLE
itemView.add_to_cart.visibility = View.GONE
}
}
}
}
}
}
【问题讨论】:
-
嗨,Jashan Deep,欢迎来到 StackOverflow!你能添加一个最小的代码和问题陈述吗?这将有助于我们中的一些人更好地了解您的问题。
-
请从您的视图持有者中添加一些代码 sn-p。我的猜测是您的绑定错误,您缺少有关 recyclerview 及其工作原理的基本信息。
-
您需要使用adapterPosition而不是位置,但一定要检查!= - 1