Я хочу запустить функцию до того, как адаптер назначит значение представлениям, что в данном случае является ничем, поскольку функция не может присвоить значения изменяемому списку до того, как адаптер назначит значения представлениям. Как можноЯ делаю как в одном классе, так и в той последовательности, которую я хочу.
package com.vedworx.nearbyplaces
import android.content.Context
import android.os.Bundle
import android.os.PersistableBundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.android.volley.Request
import com.android.volley.RequestQueue
import com.android.volley.Response
import com.android.volley.toolbox.JsonObjectRequest
import com.android.volley.toolbox.Volley
import org.json.JSONException
lateinit var mQueue: RequestQueue
val quotes = mutableListOf<String>()
val author = mutableListOf<String>()
val likes = mutableListOf<String>()
val tags = mutableListOf<String>()
class QuotesJsonArray: AppCompatActivity(){
fun getUsers() {
val url = "https://gist.githubusercontent.com/vedutheboss/b376d398b2bf7fa2c55492bdff6701e3/raw/329487e0b3aad2bac8be7551990ce8a3ca1dfda5/popular.json"
mQueue = Volley.newRequestQueue(this)
val request = JsonObjectRequest(
Request.Method.GET, url, null,
Response.Listener { response ->
try {
val jsonArray = response.getJSONArray("popular")
for (i in 0 until jsonArray.length()) {
val employee = jsonArray.getJSONObject(i)
val firstName = employee.getString("Quotes")
val age = employee.getString("Title")
val mail = employee.getString("Likes")
val tagss = employee.getString("Tags")
quotes.add(firstName)
likes.add(age)
author.add(mail)
tags.add(tagss)
}
} catch (e: JSONException) {
e.printStackTrace()
}
}, Response.ErrorListener { error -> error.printStackTrace() })
mQueue.add(request)
}
}
Я желаю функции перед этим классом.Я посмотрел в отладчике, и функция не работает, потому что она не была вызвана.Я попытался позвонить, но это не сработало. IDE показала ошибку, которую не распознала.
class QuotesRecAdapter : RecyclerView.Adapter<QuotesRecAdapter.ViewHolder>() {
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var itemQuotes: TextView
var itemLikes: TextView
var itemAuthor: TextView
var itemTags: TextView
init {
itemQuotes = itemView.findViewById(R.id.quotes)
itemLikes = itemView.findViewById(R.id.likes)
itemAuthor = itemView.findViewById(R.id.author)
itemTags = itemView.findViewById(R.id.tags)
}
}
override fun onCreateViewHolder(viewgroup: ViewGroup, p1: Int): QuotesRecAdapter.ViewHolder {
val v = LayoutInflater.from(viewgroup.context)
.inflate(R.layout.quotes_card, viewgroup, false)
return ViewHolder(v)
}
override fun getItemCount(): Int {
return quotes.size
}
override fun onBindViewHolder(viewHolder: QuotesRecAdapter.ViewHolder, i: Int) {
viewHolder.itemQuotes.text = quotes[i]
viewHolder.itemLikes.text = author[i]
viewHolder.itemAuthor.text=likes[i]
viewHolder.itemTags.text=tags[i]
}
}