Я пытаюсь отобразить элементы в нижней навигационной операции с использованием представления переработчика. Я могу отображать элементы, но не могу отобразить значения в операции в формате JSON.Я использую метод OKHTTP.Код работает до кода JSON.Я использую kotlin в своей разработке.
[{"name":"Test1","age":"10"},{"name":"Test2","location":"20"}]
У меня есть три макета в моем проекте activity_main.xml, list_row.xml и фрагмента_home.xml.Представление Recycler находится в frag_home.xml, а list_row.xml содержит два текстовых представления.
Ниже код работает нормально, но я не уверен, как добавить значение JSON в код для отображения.Я попробовал приведенный ниже код, и если у кого-то есть самый простой способ сделать это, то дайте мне знать.Любая помощь приветствуется.
HomeFragment.kt
class HomeFragment : Fragment() {
private var adapter:PersonListAdapter?=null
private var personList:ArrayList<Person>?=null
private var layoutManager: RecyclerView.LayoutManager?=null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_home, container, false)
val recyclerView = view.findViewById<RecyclerView>(R.id.recyclerView)
personList=ArrayList<Person>()
layoutManager= LinearLayoutManager(this.context)
adapter= PersonListAdapter(personList,this.context!!)
recyclerView.layoutManager=layoutManager
recyclerView.adapter=adapter
for (i in 0..16) {
val person = Person()
person.name="Hello" + i
person.age = 20 + i
personList!!.add(person)
}
adapter!!.notifyDataSetChanged()
fetchJSON()
return view
}
Код JSON:
private fun fetchJSON()
{
val SchoolDetailUrl="https://www.abc.app/"
println("School URL: $SchoolDetailUrl")
val request= Request.Builder().url(SchoolsDetailUrl).build()
val client= OkHttpClient()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
val body=response?.body()?.string()
val gson=GsonBuilder().create()
val Schoollist=gson.fromJson(body,Array<Person>::class.java)
// recyclerView.adapter=PersonDetailAdapter(Schoollist)
println("Testing School Detail $body")
}
override fun onFailure(call: Call, e: IOException) {
println("Failed to Execute the Request")
}
})
}
}
PersonListAdapter:
class PersonListAdapter(private val list: ArrayList<Person>,
private val context: Context)
: RecyclerView.Adapter<PersonListAdapter.ViewHolder>() {
override fun getItemCount(): Int {
return list.size
}
override fun onCreateViewHolder(parent: ViewGroup?, position: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.list_row, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
holder?.bindItem(list[position])
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindItem(person: Person) {
var name: TextView = itemView.findViewById(R.id.name) as TextView
var age: TextView = itemView.findViewById(R.id.age) as TextView
name.text = person.name
age.text = person.age.toString()
itemView.setOnClickListener {
Toast.makeText(context, name.text, Toast.LENGTH_LONG ).show()
}
}
}
}