Я получаю данные JSON в своем внутреннем API.
[
{
id: "is random"
image: "my url"
},
......10000+
]
Мой идентификатор - это случайное число без непрерывности.
Каждый объект json имеет изображение.
Iвызовите api и поместите данные в RecyclerView
.
Но когда отображается RecyclerView
, он застревает или падает.
Я использую Glide load image.
GlideApp.with(context).load(myUrl).placeholder(myPlaceholder).into(uiImage)
Как я могу позволить RecyclerView
читать его плавно?
Можно ли использовать библиотеку подкачки, чтобы вначале отображать пять данных?
Но я не знаю, какой DataSource
подходит для моего формата JSON.
ItemKeyedDataSource
?или PageKeyedDataSource
?или PositionalDataSource
?
Обновление:
class MyAdapter(): ListAdapter<Item, ItemHolder>(Item.DIFF_CALLBACK){
override fun onCreateViewHolder(parent: ViewGroup, type: Int): ItemHolder=
ItemHolder(LayoutInflater.from(parent.context), parent).also {}
override fun onBindViewHolder(holder: ItemHolder, position: Int): Unit =
with(holder) {
val item = getItem(position)
uiTextView.text = item.id
GlideApp.with(context).load(item.image).placeholder(myPlaceholder).into(uiImage)
}
}
Обновление:
class ItemHolder(inflater: LayoutInflater, parent: ViewGroup)
: RecyclerView.ViewHolder(inflater.inflate(R.layout.my_Item, parent, false)) {
val uiTextView: TextView = itemView.findViewById(R.id.my_textView)
val uiImage: ImageView = itemView.findViewById(R.id.my_image)
}
Иногда происходит сбой при удалении заполнителя.
GlideApp.with(context).load(myUrl).into(uiImage)
Журнал сообщений:
I/Choreographer: Skipped 3660 frames! The application may be doing too much work on its main thread.