RecyclerView загрузить 10000+ изображений из API-интерфейса сервера - PullRequest
0 голосов
/ 27 февраля 2019

Я получаю данные 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.

1 Ответ

0 голосов
/ 27 февраля 2019

введите GlideApp вместо создания нового экземпляра каждый раз, что сделает ваше приложение более плавным.

А также, если вы используете Библиотека подкачки , затем используйте PagedListAdapter .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...