【发布时间】:2018-10-30 01:23:20
【问题描述】:
我正在尝试使用改造和 rx 从 JSON 获取数据。我关注了this tutorial。但是那个教程中的 JSON 和我的有点不同。所以我只是改变了如何解析它。但是,如果我得到 JSON,因为我不知道我如何知道 JSON 是否已经被调用,并且在应用程序中它没有显示任何内容。
如果有人知道它是如何工作的以及如何进行解析,请指导我。
这是我要在片段中解析 JSON 数据的代码。
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
rv__list_posts?.layoutManager = LinearLayoutManager(this.requireContext())
val retrofit = Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl("https://www.thesportsdb.com/").build()
val postsApi = retrofit.create(INetworkAPI::class.java)
var response = postsApi.getAllPosts()
response.observeOn(AndroidSchedulers.mainThread()).subscribeOn(IoScheduler()).subscribe {
rv__list_posts.adapter = MainAdapter(listOf(it), this.requireContext())
}
}
这是我的界面:
interface INetworkAPI {
@GET("api/v1/json/1/eventslast.php?id=133602")
fun getAllPosts(): Observable<Team>
}
这是适配器:
class MainAdapter(val postList: List<Team>, val context: Context) :
RecyclerView.Adapter<MainAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):
ViewHolder {
return
ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_layout,parent,false))
}
override fun getItemCount(): Int {
return 10
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemView.home_team.text = postList.get(position).homeTeam
holder.itemView.home_score.text = postList.get(position).homeScore.toString()
holder.itemView.away_team.text = postList.get(position).awayTeam
holder.itemView.away_score.text = postList.get(position).awayScore.toString()
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
}
感谢您的帮助。
【问题讨论】:
-
可以加
Team类吗? -
完成。我添加了它
标签: android kotlin rx-java retrofit2 reactivex