Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何更新适配器数据列表?_Android_Kotlin_Android Recyclerview_Adapter - Fatal编程技术网

Android 如何更新适配器数据列表?

Android 如何更新适配器数据列表?,android,kotlin,android-recyclerview,adapter,Android,Kotlin,Android Recyclerview,Adapter,我在更新recyclerView适配器中的数据列表时遇到问题 我正在调用webservice以获取main.activity中的数据列表,如下所示: private fun get_company_name(){ val request = buildService(ApiInterface::class.java) val call = request.getCompanyList() call.enqueue(object : Callback<List<

我在更新recyclerView适配器中的数据列表时遇到问题

我正在调用webservice以获取main.activity中的数据列表,如下所示:

private fun get_company_name(){
    val request = buildService(ApiInterface::class.java)
    val call = request.getCompanyList()

    call.enqueue(object : Callback<List<CompanyModel>>{
        override fun onResponse(call: Call<List<CompanyModel>>, response: Response<List<CompanyModel>>) {
            if (response.isSuccessful){
                indeterminateBar.visibility = View.INVISIBLE
                frg_holder.apply {
                    setHasFixedSize(true)
                    layoutManager = LinearLayoutManager(this@MainActivity)
                    adapter = DidebanAdapter(response.body()!!)
                }
            }
        }

        override fun onFailure(call: Call<List<CompanyModel>>, t: Throwable) {
            indeterminateBar.visibility = View.INVISIBLE
        }

    })
}
private fun get_company_name(){
val request=buildService(ApiInterface::class.java)
val call=request.getCompanyList()
排队(对象:Callback{
覆盖fun onResponse(调用:调用,响应:响应){
if(response.issucessful){
不确定Bar.visibility=View.INVISIBLE
frg_支架。适用{
setHasFixedSize(真)
layoutManager=LinearLayoutManager(this@MainActivity)
适配器=DidebanAdapter(response.body()!!)
}
}
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
不确定Bar.visibility=View.INVISIBLE
}
})
}
这是我的适配器:

class DidebanAdapter(val didebans: List<CompanyModel>): RecyclerView.Adapter<DidebanViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DidebanViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.fragment_dideban, parent, false)
        return DidebanViewHolder(view)
    }



    override fun getItemCount(): Int {
        return didebans.size
    }

    override fun onBindViewHolder(holder: DidebanViewHolder, position: Int) {

        holder.itemView.delete_dideban.setOnClickListener(View.OnClickListener { view ->
            val id : Int = holder.itemView.dideban_id.text.toString().toInt();
            val request = ApiClient.buildService(ApiInterface::class.java)
            val call = request.deleteCompany(id)

            call.enqueue(object : Callback<Boolean> {
                override fun onResponse(call: Call<Boolean>, response: Response<Boolean>) {
                    notifyItemRemoved(position)
                }

                override fun onFailure(call: Call<Boolean>, t: Throwable) {
                    Log.e("msg","false")
                }


            })
        })

        return holder.bind(didebans[position])
    }
}

class DidebanViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
    private val title:TextView = itemView.findViewById(R.id.dideban_name)
    private val dideban_id:TextView = itemView.findViewById(R.id.dideban_id)

    fun bind(dideban: CompanyModel) {
        title.text = dideban.Title
        dideban_id.text = dideban.Id.toString()
    }

}
class-DidebanAdapter(val-didebans:List):RecyclerView.Adapter(){
override fun onCreateViewHolder(父级:ViewGroup,viewType:Int):DidebanViewHolder{
val view=LayoutInflater.from(parent.context).充气(R.layout.fragment_dideban,parent,false)
返回DidebanViewHolder(视图)
}
重写getItemCount():Int{
返回didebans.size
}
覆盖BindViewHolder(holder:DidebanViewHolder,位置:Int){
holder.itemView.delete_dideban.setOnClickListener(View.OnClickListener{View->
val id:Int=holder.itemView.dideban_id.text.toString().toInt();
val请求=ApiClient.buildService(ApiInterface::class.java)
val call=request.deleteCompany(id)
排队(对象:Callback{
覆盖fun onResponse(调用:调用,响应:响应){
已删除的项目(位置)
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
Log.e(“msg”,“false”)
}
})
})
返回持有者绑定(didebans[位置])
}
}
类DidebanViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
私有val标题:TextView=itemView.findViewById(R.id.dideban_name)
private val dideban_id:TextView=itemView.findViewById(R.id.dideban_id)
有趣的绑定(迪德班:公司模型){
title.text=dideban.title
dideban_id.text=dideban.id.toString()
}
}
在onBindViewHolder函数中,我为单击的删除图像设置了操作,它调用另一个webservice并从数据库中删除项,它工作正常,但我希望我的适配器在删除项时更新。
我使用notifyItemRemoved(position),但它不能根据需要更新我的列表。

在<代码>notifyItemRemoved(position)之前,您应该手动从列表中删除元素(适配器不会为您这样做)
didebans.remove(position)

哦,我不敢相信忘记了这一行,非常感谢