我想从 https://www.thesportsdb.com/api/v1/json/1/eventspastleague.php?id=4328 获取数据
但我有错误
java.lang.IllegalArgumentException:指定为非空的参数为 null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, 参数数据位于 com.yutra.jadwalbola.last_match。LastMatchFragment.showTeamList(Unknown 来源:21( 在 com.yutra.jadwalbola.last_match。LastMatchPresenter$getTeamList$1$1.invoke(LastMatchPresenter.kt:21( 在 com.yutra.jadwalbola.last_match。LastMatchPresenter$getTeamList$1$1.invoke(LastMatchPresenter.kt:8(
这是我的LastMatchDBApi
object LastMatchDBApi {
fun getMatch(): String {
return Uri.parse(BuildConfig.BASE_URL).buildUpon()
.appendPath("api")
.appendPath("v1")
.appendPath("json")
.appendPath(BuildConfig.TSDB_API_KEY)
.appendPath("eventspastleague.php")
.appendQueryParameter("id", "4328")
.build()
.toString()
}
}
这是我的连载
data class LastMatch(
@SerializedName("strEvent")
var eventName: String? = null
)
这是我的演示者
class LastMatchPresenter(private val view: MainView,
private val apiRepository: ApiRepository,
private val gson: Gson) {
fun getTeamList() {
view.showLoading()
doAsync {
val data = gson.fromJson(apiRepository
.doRequest(LastMatchDBApi.getMatch()),
LastMatchResponse::class.java
)
uiThread {
view.hideLoading()
view.showTeamList(data.lastMatch)
}
}
}
}
这是我的回应
data class LastMatchResponse(
val lastMatch: List<LastMatch>
)
这是我的片段活动
class LastMatchFragment : Fragment(), MainView {
private lateinit var progressBar: ProgressBar
private lateinit var swipeRefresh: SwipeRefreshLayout
private var lastMatch: MutableList<LastMatch> = mutableListOf()
private lateinit var adapter: MainAdapter
private lateinit var listTeam: RecyclerView
private var key : String = "4328"
companion object {
fun newInstance(): LastMatchFragment {
return LastMatchFragment()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = UI {
linearLayout {
lparams (width = matchParent, height = wrapContent)
orientation = LinearLayout.VERTICAL
topPadding = dip(16)
leftPadding = dip(16)
rightPadding = dip(16)
// textView {
// text = "test image"
// }
relativeLayout{
lparams (width = matchParent, height = wrapContent)
listTeam = recyclerView {
lparams (width = matchParent, height = wrapContent)
layoutManager = LinearLayoutManager(ctx)
}
progressBar = progressBar {
}.lparams{
centerHorizontally()
}
}
}
}.view
adapter = MainAdapter(lastMatch)
listTeam.adapter = adapter
val request = ApiRepository()
val gson = Gson()
var presenter = LastMatchPresenter(this, request, gson)
presenter.getTeamList()
return view
}
override fun showLoading() {
progressBar.visible()
}
override fun hideLoading() {
progressBar.invisible()
}
override fun showTeamList(data: List<LastMatch>) {
lastMatch.clear()
lastMatch.addAll(data)
adapter.notifyDataSetChanged()
}
}
如果有人有酸代码来获取这些数据,请帮助我
在下面的代码中,您将列表作为 null 从类传递LastMatchPresenter
view.showTeamList(data.lastMatch)
默认情况下,Kotlin中的所有变量和参数都是non-null
。如果要null
参数传递给方法,则应向其类型添加?
,例如:
override fun showTeamList(data: List<LastMatch>?) {
lastMatch.clear()
lastMatch.addAll(data)
adapter.notifyDataSetChanged()
}