如何使用Kotlin重新调用活动中的回收站视图的内容
我想要做什么:当用户在edittext中输入某个东西,调用一个API并在回收站中显示响应。
在OnCreate()
usersData= ArrayList() resultRecyclerView.setHasFixedSize(true) resultRecyclerView.layoutManager=LinearLayoutManager( this@MainActivity,LinearLayoutManager.VERTICAL,false) itemsAdapter=adapter(this@MainActivity,usersData) resultRecyclerView.adapter=itemsAdapter
在OnResume()
searchText.addTextChangedListener(object : TextWatcher { override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { //.... } override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { //....... } override fun afterTextChanged(s: Editable) { Log.v("Text is ",s.toString()) val url="https://api.github.com/search/users?q="+s.toString().trim()+"+sort:followers" fetchData(url) } })
取数据的方法
private fun fetchData(url: String) { val tag_string_req = "string_req" val strReq = StringRequest(Request.Method.GET, url, Response.Listener<String> { response -> Log.d(TAG, response.toString()) val builder = GsonBuilder() val gson = builder.create() //val allItems=gson.fromJson(response,AllUsers::class.java) val data=gson.fromJson(response,AllUsers::class.java) usersData=data.items Log.v("No of users",usersData?.size.toString()) resultRecyclerView.removeAllViews() itemsAdapter?.notifyDataSetChanged() }, Response.ErrorListener { error -> VolleyLog.d(TAG, "Error: " + error.message) }) // Adding request to request queue AppController.getInstance().addToRequestQueue(strReq, tag_string_req) }
但更新的数据没有通过适配器(它仍然有零数据)。 我从API
获得预期的响应。 notifyDataSetChanged()
不在更新列表。
我以为notifyDataSetChanged也自动更新数据,但没有。
我需要打电话
itemsAdapter?.updateData(usersData)
并在适配器中:
fun updateData(users: ArrayList<Items>?){ this.users=users }
在适配器中添加此方法
fun addData(exList: MutableList<Object>) { items.clear() items.addAll(exList) notifyDataSetChanged() }
并像这样添加来自您的活动/片段的数据
projectsAdapter.addData(list as MutableList<Object>)