У меня есть «проблема» с этим:
,
, где кнопка P является предыдущей, а N как следующая, обе кнопки вызывают:
private fun fetchJson(date: String) {
val url = "https://xxx/$date.json"
println("URL: $url")
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
val responseData = response.body()?.string()
runOnUiThread {
var rows: List<Product> = emptyList()
try {
if (response.code() in 200..399) {
val gson = GsonBuilder().create()
rows = gson.fromJson(responseData, Array<Product>::class.java).toList()
recycleView.adapter = ProductsAdapter(this@DetailsActivity, rows)
(recycleView.adapter as ProductsAdapter).notifyDataSetChanged()
}
} catch (e: JSONException) {
e.printStackTrace()
}
}
}
override fun onFailure(call: Call, e: IOException) {
println("Failed")
}
})
}
и класс продуктов Adapter
class ProductsAdapter(private val context: Context, private val rows: List<Product>): RecyclerView.Adapter<ProductsAdapter.ProductViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.product_item, parent, false)
return ProductViewHolder(view)
}
override fun getItemCount(): Int {
return rows.size
}
override fun onBindViewHolder(holder: ProductViewHolder, position: Int) {
val row = rows[position]
holder.setData(row, position)
}
inner class ProductViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
fun setData(row: Product, position: Int) {
/// set data
}
}
}
также XML для просмотра в режиме рециркуляции:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycleView"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#E9DA1616"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/vipBtn" />
, и основная проблема заключается в нажатии на кнопку N или P, данныеесть, но recyclerView не перезагружается с новыми данными.Только показывать продукт (заполнить список переработчиков) в первый раз.
Где я ошибаюсь?Я только начинаю с Android и Kotlin, каждый урок говорит, что notifyDataSetChanged()
это сделает работу, но не ...
Спасибо