notifyItemRangeInserted命令不工作了

0 人关注

我在调用适配器的 notifyItemRangeInserted 时遇到了一个问题。当我调用这个方法时,什么都没有发生,就这么简单。我试着在 ViewHolderAdapter 中设置一些 println() ,但他没有被调用,所以我不能查看打印的结果。

我已经尝试了适配器的所有 "通知 "命令,但都不起作用。根本没有发生。

这就是我的 MainActivity 。我测试的所有对象和数组,都工作得很好。我不明白为什么通知不工作。

class MainActivity:AppCompatActivity(){
    //Declarations of the variables
    var pageNumber = 1
    var limitPerPage = 5
    lateinit var product: Product
    var productList = ArrayList<EachProduct>()
    var myAdapter  =ViewHolderAdapter(productList, productList.size)
    override fun onCreate(savedInstanceState:Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        recyclerView.layoutManager = LinearLayoutManager(this@MainActivity)
        recyclerView.adapter = myAdapter

在列表中添加项目并通知ViewHolderAdapter的代码是

//update the product list fun updateProductList(product:Product){ for(i in 0 until 5 step 1){ productList.add(product.produtos[i]) showData(productList,pageNumber*limitPerPage)//then notify fun showData(productList:List<EachProduct>,productsListSize:Int){ myAdapter.notifyItemRangeInserted(0,productList.size)

这是我的ViewHolderAdapter类

class ViewHolderAdapter(private var products: List<EachProduct>, private val productsListSize: Int): RecyclerView.Adapter<ViewHolderAdapter.ViewHolder>() {
    override fun onCreateViewHolder(parent:ViewGroup,viewType:Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerview_layout, parent, false)
        returnViewHolder(view)
    override fun getItemCount() = productsListSize
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.productName.text=products[position].nome
        Picasso.get().load(products[position].fabricante.img).into((holder.productLogo))
    class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
        val productName:TextView=itemView.ProductName
        var productLogo:ImageView=itemView.ProductLogo

我希望ViewHolderAdapter能被调用,但这并没有发生。为什么会这样呢?我不明白。如果有人能帮助我,我将非常感激。

1 个评论
介意先格式化你的代码吗?
android
kotlin
android-recyclerview
Otto Laurence
Otto Laurence
发布于 2019-06-06
2 个回答
Akaki Kapanadze
Akaki Kapanadze
发布于 2022-01-28
已采纳
0 人赞同

因为变量 productsListSize 的初始值是零。把它从构造函数中删除,像这样改变适配器。

class ViewHolderAdapter(private var products: List<EachProduct>): RecyclerView.Adapter<ViewHolderAdapter.ViewHolder>() {
    override fun getItemCount() = products.size
    
David Rauca
David Rauca
发布于 2022-01-28
0 人赞同