Alok Singh
Alok Singh

Reputation: 9

Unresolved reference: it

I am trying to get array of JSONOBJECT from articles but it shows error. error is unresolved reference:it

the line which shows error is:

val newsJsonArray =it.getJSONArray("articles")

here is code of main activity:

`package com.example.newsfresh

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.JsonObjectRequest
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), NewsItemClicked {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

//        RecyclerView.LayoutManager=LinearLayoutManager
        recyclerView.layoutManager=LinearLayoutManager(this)
        val items = fetchData()
        val adapter= NewsListAdapter(items,this)
        recyclerView.adapter=adapter

    }
    private  fun fetchData(){
        val url = "https://newsapi.org/v2/top-headlines?country=In&category=business&apiKey=API_KEY"
        val jsonObjectRequest = JsonObjectRequest(
            Request.Method.GET, url, null,
            { response ->
               val newsJsonArray =it.getJSONArray("articles")
            },
            { error ->
                // TODO: Handle error
            }
        )

// Access the RequestQueue through your singleton class.
        MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest)
    }

    override fun onItemClicked(item: String) {
        Toast.makeText(this,"clicked item is$item",Toast.LENGTH_LONG).show()
    }
}`

the code for adapter class:`

       package com.example.newsfresh
        
        import android.os.Parcel
        import android.os.Parcelable
        import android.view.LayoutInflater
        import android.view.View
        import android.view.ViewGroup
        import android.widget.TextView
        import androidx.recyclerview.widget.RecyclerView
        
        class NewsListAdapter(private val items:ArrayList<String>,private val listener:NewsItemClicked) :RecyclerView.Adapter<NewsViewHolder>() {
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NewsViewHolder {
                val view = LayoutInflater.from(parent.context).inflate(R.layout.item_news,parent,false)
                val viewHolder = NewsViewHolder(view)
                view.setOnClickListener {
                     listener.onItemClicked(items[viewHolder.adapterPosition])
                }
                return viewHolder
            }
        
            override fun onBindViewHolder(holder: NewsViewHolder, position: Int) {
                 val currentItem = items[position]
                holder.titleView.text=currentItem
            }
        
            override fun getItemCount(): Int {
        
                return items.size
            }
        
        }
        
        
        class NewsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
            val titleView:TextView = itemView.findViewById(R.id.title)
        }
        
        interface  NewsItemClicked{
            fun onItemClicked(item:String)
        }

`

here is image for referenceenter image description here

Upvotes: 1

Views: 1934

Answers (1)

a_local_nobody
a_local_nobody

Reputation: 8191

it is the default name assigned if you don't assign another name, which you've done with { response ->

so you should be using response.whatever:

 val jsonObjectRequest = JsonObjectRequest(
        Request.Method.GET, url, null,
        { response ->
           val newsJsonArray =response.getJSONArray("articles")
        },
        { error ->
            // TODO: Handle error
        }
    )

or

 val jsonObjectRequest = JsonObjectRequest(
        Request.Method.GET, url, null,
        { 
           val newsJsonArray = it.getJSONArray("articles")
        },
        { error ->
            // TODO: Handle error
        }
    )

Upvotes: 1

Related Questions