将Gson Api与recyclerview一起使用时出错



大家好,我正在使用带有Recyclerview的gson api,我在适配器中遇到了这个错误,它说

类型为"myAdapter"的

表达式"myAdapter"不能作为函数调用。找不到"已调用"的函数

当我在没有数据的情况下运行代码时,它会给我这个错误:

lateinit属性myAdapter尚未初始化

我的活动和课程

private val datalist: MutableList<Sura> = mutableListOf()
private lateinit var myAdapter: MyAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_quran_a_p_i)
myAdapter = myAdapter(datalist) // here is the error

apiQuranRecyclerView.layoutManager = LinearLayoutManager(this)
apiQuranRecyclerView.addItemDecoration(DividerItemDecoration(this, OrientationHelper.VERTICAL))
apiQuranRecyclerView.adapter = myAdapter
AndroidNetworking.initialize(this)
AndroidNetworking.get("http://api.islamhouse.com/v1/mykey/quran/get-category/462298/ar/json/")
.build()
.getAsObject(Surasnames::class.java, object : ParsedRequestListener<Surasnames>{
override fun onResponse(response: Surasnames) {
datalist.addAll(response.suras)
myAdapter.notifyDataSetChanged()
}
override fun onError(anError: ANError?) {
}
})

}

我的适配器

class MyAdapter (private val datalist: MutableList<Sura>): RecyclerView.Adapter<myHolder>() {
private lateinit var context: Context
override fun onCreateViewHolder(parent: ViewGroup, p1: Int): myHolder {
context = parent.context
return myHolder(LayoutInflater.from(context).inflate(R.layout.api_quran_view, parent, false))
}

override fun getItemCount(): Int = datalist.size

override fun onBindViewHolder(holder: myHolder, position: Int) {
val data = datalist[position]
val apisuraname = holder.itemView.apiSuraNames
val surasnames = "${data.id} ${data.title}"
apisuraname.text = surasnames

holder.itemView.setOnClickListener {
Toast.makeText(context, surasnames, Toast.LENGTH_SHORT).show()
}
}

我的持有者

类myHolder(itemView:View(:RecyclerView.ViewHolder(itemView({}

我的型号

data class Sura(
@SerializedName("add_date")
val addDate: Int,
@SerializedName("api_url")
val apiUrl: String,
@SerializedName("id")
val id: Int,
@SerializedName("title")
val title: String,
@SerializedName("type")
val type: String

)

第二个

data class Surasnames(
@SerializedName("add_date")
val addDate: Int,
@SerializedName("description")
val description: String,
@SerializedName("id")
val id: Int,
@SerializedName("locales")
val locales: List<Any>,
@SerializedName("suras")
val suras: List<Sura>,
@SerializedName("title")
val title: String)

提前感谢

您需要调用构造函数。更改线路

myAdapter = myAdapter(datalist)

myAdapter = MyAdapter(datalist)

最新更新