Присвойте значения изменчивому списку до того, как Adapter назначит значения представлениям. - PullRequest
1 голос
/ 06 июля 2019

Я хочу запустить функцию до того, как адаптер назначит значение представлениям, что в данном случае является ничем, поскольку функция не может присвоить значения изменяемому списку до того, как адаптер назначит значения представлениям. Как можноЯ делаю как в одном классе, так и в той последовательности, которую я хочу.

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]

    }





}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...