我正在尝试设置 var json,但最后我得到了空指针。任何想法如何解决这一问题 ?还是安卓新手
class Requester(activity: Activity) {
...
var json : Info? = null
...
fun getData (counter : Int) {
println("frist attemp"+json)// here it is null as it should be
var show = 5*counter
var url = "https://reqres.in/api/users?page=1&per_page=$show"
var 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()
val gson = GsonBuilder().create()
json = gson.fromJson(body,Info::class.java)//it should be init here
activity.runOnUiThread {
dataSize = json!!.total
val adapter = UsersAdapter(activity ,json!!,activity)
if(activity is MainActivity)
activity.recycler_View.adapter = adapter
}
isLoading=false
toast.cancel()
}
override fun onFailure(call: Call?, e: IOException?) {
activity.runOnUiThread {
val adapter = UsersAdapter(activity ,Info(0,0,0,0,
listOf(Data(0,"NO CONECTION","",""))),activity)
activity.recycler_View.adapter = adapter
Toast.makeText(activity,"Failed to connect", Toast.LENGTH_SHORT).show()
toast.cancel()
}
isLoading=false
}
})
println("end "+json)// here i get NULL any ideas why ?
}
}
班级信息:
class Info(val page: Int,
val per_page: Int,
val total: Int,
val total_pages: Int,
val data: List<Data>)
班级资料:
class Data(val id: Int,
val first_name: String,
val last_name: String,
val avatar: String)
类用户活动:
class UserActivity : AppCompatActivity(){
var id : Int =0
val requester : Requester = Requester(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_user)
id = intent.getIntExtra("id",0)
display()
}
private fun display() {
textView_ID_DEFINED.setText("$id")
requester.getData(id/3+1)
var info : Info? = requester.json
println("requester="+requester)
println("requester.info= "+requester.json)
if (info !=null){
for (i in 0..info.data.size){
if (id == info.data[i].id){
println("ahoj")
}
}
}
}
}
堆栈跟踪:
I/Timeline: Timeline: Activity_launch_request id:com.example.android.zadanie time:197846234 I/System.out:requester=com.example.android.zadanie.Requester@127852b requester.info= null I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@5994e58 time:197846419 I/System.out: mid com.example.android.zadanie.Info@e380f1b