ошибка в использовании Gson Api с переработчиком? - PullRequest
0 голосов
/ 08 апреля 2020

Привет, ребята! Я использую API-интерфейс gson с Recyclerview, и я получил эту ошибку с адаптером, и он говорит, что выражение

'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: вид): 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)

заранее спасибо

1 Ответ

1 голос
/ 08 апреля 2020

Вам нужно вызвать конструктор. Измените строку

myAdapter = myAdapter(datalist)

на

myAdapter = MyAdapter(datalist)

...