调用适配器的notifyItemRangeInserted
时遇到问题。当我调用此方法时,什么也没发生,就这么简单。我试图在println()
中设置一些ViewHolderAdapter
,但是没有叫他,所以我看不到照片。
我已经尝试了适配器的所有“通知”命令,但这些都不起作用。只是什么都没有发生。
那是我的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
被调用,但这没有发生。为什么会这样呢?我听不懂如果有人可以帮助我,我将非常感激。
答案 0 :(得分:0)
因为变量productsListSize
的初始值为零。从构造函数中删除它,然后像这样更改适配器:
class ViewHolderAdapter(private var products: List<EachProduct>): RecyclerView.Adapter<ViewHolderAdapter.ViewHolder>() {
override fun getItemCount() = products.size
}