Я пытаюсь отобразить список, используя представление переработчика, но получаю значение null
.У меня есть три класса Test
, TestModel
и TestListAdapter
.Ниже мой вывод Json.Я получаю ошибку в одном месте.
val catObj = response.getJSONObject(i)
.
Если я упомяну i
как int
, то получаю сообщение об ошибке, поэтому мне нужно ввести i.toString()
для преобразования строки.Даже после преобразования i
в строку я не получаю вывод и никаких ошибок в журнале ошибок.Я использую Volley
и Kotlin
в своем коде.Любая помощь приветствуется.
Error:--Type Mismatch
val catObj = response.getJSONObject(i)
Выход Json:
[{"id":"1","name":"AAAA"},{"id":"3","name":"BBBB"}]
Тестовый класс:
class Test : AppCompatActivity() {
var volleyRequest:RequestQueue?=null
var TestList: ArrayList<TestModel>?=null
var adapter:TestListAdapter?=null
var layoutManager: RecyclerView.LayoutManager?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_Test)
var HelloLink="https://www.abc.app"
TestList= ArrayList<TestModel>()
volleyRequest = Volley.newRequestQueue(this)
getTest(HelloLink)
}
fun getTest(url: String) {
print("Url Value is:"+url)
val catRequest = JsonObjectRequest(Request.Method.GET,
url, Response.Listener {
response: JSONObject ->
try {
for (i in 0..response.length() - 1) {
val Test=TestModel()
val catObj = response.getJSONObject(i)
var name = catObj.getString("name")
Test.name = name
Log.d("Name Result==>>", name)
TestList!!.add(Test)
adapter = TestListAdapter(TestList!!, this)
layoutManager = LinearLayoutManager(this)
recyclerViewTest.layoutManager = layoutManager
recyclerViewTest.adapter = adapter
}
adapter!!.notifyDataSetChanged()
}catch (e: JSONException) { e.printStackTrace()}
},
Response.ErrorListener {
error: VolleyError? ->
try {
Log.d("Error:", error.toString())
}catch (e: JSONException){e.printStackTrace()}
})
volleyRequest!!.add(catRequest)
}
}
TestListAdapter Class
class TestListAdapter(private val list:ArrayList<TestModel>,
private val context: Context):RecyclerView.Adapter<TestListAdapter.ViewHolder>()
{
override fun getItemCount(): Int {
return list.size
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): ViewHolder {
val view
=LayoutInflater.from(context).inflate(R.layout.list_Test,p0,false)
return ViewHolder(view)
}
override fun onBindViewHolder(p0: ViewHolder, p1: Int) {
p0?.bindItem(list[p1])
}
class ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView) {
fun bindItem(Test:TestModel)
{
var name:TextView=itemView.findViewById<TextView>(R.id.CatName)
name.text=Test.name
}
}
}
Модель класса
class TestModel
{
var id:Int?=null
var name:String?=null
}