Как получить текст из API в моем приложении kotlin? - PullRequest
0 голосов
/ 20 марта 2020

Так что я новичок в API. Я получил json API, и я изо всех сил пытаюсь использовать атрибуты, чтобы фактически показать его в моем текстовом представлении.

Мне нужно обновить textView_boat_title с именем каждой лодки в этом API. Представление переработчика настроено для обработки этого, но мне все еще нужно получить что-то еще, кроме нуля.

Я пробовал несколько способов приблизиться к этому, но безрезультатно. Заранее спасибо.

Класс моей модели:

 //Gotten from POJO
    @SerializedName("name")
    @Expose
    private Object name;


    public Object getName() {
        return name;
    }

MainActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        recyclerView_main.layoutManager = LinearLayoutManager(this)
        //recyclerView_main.adapter = MainAdapter()

        fetchJson()
    }

    //Don't mind this
    private fun fetchJson() {
        println("Attempting to fetch JSON")


        val url = "https://www.noforeignland.com/home/api/v1/places/"

        val request = Request.Builder().url(url).build()

        val client = OkHttpClient()
        client.newCall(request).enqueue(object: Callback{


            override fun onResponse(call: Call, response: Response) {
                val body = response.body?.string()
                println(body)

                val gson = GsonBuilder().create()

                val homeFeed = gson.fromJson(body, Models::class.java)

                runOnUiThread {
                    recyclerView_main.adapter = MainAdapter(homeFeed)
                }
            }

            override fun onFailure(call: Call, e: IOException) {
                println("Failed to execute request")
            }
        })
    }
}

MainAdapter

class MainAdapter(var models: Models) : RecyclerView.Adapter<CustomViewHolder>() {

    private val boatTitles = listOf("First boat", "Second", "3rd")

    //number of items
    override fun getItemCount(): Int {
        val list = ArrayList<Models>()
        //TODO: get a dynamic count from API
        return 3
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
        // how do we even create a view
        val layoutInflater = LayoutInflater.from(parent.context)
        val cellForRow = layoutInflater.inflate(R.layout.activity_boat_row, parent, false)
        return CustomViewHolder(cellForRow)
    }

    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
        val boat = boatTitles.get(position)
        holder.view.textView_boat_title.text = boat
    }
}

class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {

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