onBindViewHolder
вызывается RecyvlerView
для отображения данных в указанной позиции. Поскольку у вас есть все данные в List
, их соответствующий индекс будет таким же, как и положение itemView
.
В вашей функции вы перебираете все элементы в list
для каждого itemView
, который генерирует ViewHolder
.
Вы должны удалить for
l oop из своего кода и просто использовать position
в качестве index
для извлечения данных из ваш list
, чей index
совпадает с position
.
Попробуйте этот код:
adapter = new FirebaseRecyclerAdapter<Profiles, DonarViewHolder>(model) {
@Override
protected void onBindViewHolder(@NonNull DonarViewHolder holder, int position, @NonNull Profiles profiles) {
Toast.makeText(List.this,"List :" +list.get(position), Toast.LENGTH_SHORT).show();
}
}
Для этого метода каждый раз, когда генерируется itemView
, он будет быть на position
и с этим в качестве индекса, вы можете легко получить данные из list
.
для вашего сценария, поскольку вы уже внутри каждого itemView
, генерируемого внутри onBindViewHolder
, а затем вы выполняете итерацию для каждого элемента в list
, следовательно, каждый элемент отображается ровно столько же раз, сколько и размер list
.