Команда notifyItemRangeInserted не работает - PullRequest
0 голосов
/ 06 июня 2019

У меня проблема при вызове notifyItemRangeInserted адаптера.Когда я вызываю этот метод, ничего не происходит, просто так.Я попытался установить println() в ViewHolderAdapter, но он не вызывается, поэтому я не могу просмотреть распечатки.

Я перепробовал все команды "notify"адаптер, и ничего из этого не работает.Просто ничего не происходит.

Это мой 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 Ответ

0 голосов
/ 06 июня 2019

Поскольку начальное значение переменной productsListSize равно нулю.Удалите его из конструктора и измените адаптер следующим образом:

class ViewHolderAdapter(private var products: List<EachProduct>): RecyclerView.Adapter<ViewHolderAdapter.ViewHolder>() {

    override fun getItemCount() = products.size

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...