Ошибка позиции просмотра Firestore Recycler при переходе от активности к просмотру recyclerviewJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка позиции просмотра Firestore Recycler при переходе от активности к просмотру recyclerview

Сообщение Anonymous »

Я работаю над приложением для ресторанов, в моей основной деятельности есть recyclerview с Firestore, заполненный базой данных в реальном времени, когда я нажимаю на карту, он активирует onitemclicklistener mListener, все это в моем адаптере ресторана, в основном У меня есть адаптер.setOnItemClickListener, который передает позицию и намерение активности ресторана.
Клик работает, он переносит меня к активности ресторана, но проблема возникает, когда я возвращаюсь от активности ресторана к основной деятельности.
Я пробовал использовать onbindingadapterposition, и все, но ничего, ошибка все еще есть
E FATAL EXCEPTION: main
Процесс: com.example.prueba2, PID: 10188
java.lang.IndexOutOfBoundsException: обнаружено несоответствие. Неверный адаптер держателя представления, позицияresviewHolder{39ee2cb позиция=9 id=-1, oldPos=3, pLpos:3 Scrap [attachedScrap] tmpDetached без родительского элемента} androidx.recyclerview.widget.RecyclerView{7873f72 VFED..... ..... .Я. 3,3-1077,2208 #7f0801a2 приложение:id/recview}, адаптер:com.example.prueba2.adapter.RestaurantAdapter@966b36b, макет:androidx.recyclerview.widget.LinearLayoutManager@e16efc3, контекст:com.example.prueba2. MainActivity@2c5755a
в адаптере:
private OnItemClickListener mListener;

public interface OnItemClickListener {
void onItemClick(int position);
}

public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
protected void onBindViewHolder(@NonNull resviewHolder holder,int position,@NonNull Restaurant model) {
holder.name.setText(model.getName());
holder.phone.setText(model.getPhone());
holder.address.setText(model.getAddress());
holder.category.setText(model.getCategory());
holder.averageRating.setRating(model.getAverageRating());

// Carga la imagen del restaurante utilizando Glide
Glide.with(holder.itemView.getContext())
.load(model.getPhotoUrl())
.into(holder.imageView);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int clickedPosition;
if (mListener != null) {
int adapterPosition = holder.getBindingAdapterPosition();
if (adapterPosition != RecyclerView.NO_POSITION) {
clickedPosition = adapterPosition;
} else {
// Se getBindingAdapterPosition() restituisce NO_POSITION, non fare nulla
return;
}
mListener.onItemClick(clickedPosition);
}
}
});

}
public int getItemCount() {
return super.getItemCount();
}


и основная деятельность:
`
adapter.setOnItemClickListener(new RestaurantAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
// Ottieni il ristorante dalla posizione selezionata
Restaurant selectedRestaurant = adapter.getItem(position);
if (selectedRestaurant != null) {
// Avvia l'attività ViewRestaurantActivity passando i dati del ristorante come extra
Intent intent = new Intent(MainActivity.this, ViewRestaurantActivity.class);
intent.putExtra("restaurant_name", selectedRestaurant.getName());
intent.putExtra("restaurant_phone", selectedRestaurant.getPhone());
intent.putExtra("restaurant_address", selectedRestaurant.getAddress());
intent.putExtra("restaurant_category", selectedRestaurant.getCategory());
intent.putExtra("restaurant_photoUrl", selectedRestaurant.getPhotoUrl());
intent.putExtra("restaurant_cordX", selectedRestaurant.getCordX());
intent.putExtra("restaurant_cordY", selectedRestaurant.getCordY());
intent.putExtra("rating_avg", selectedRestaurant.getAverageRating());
startActivity(intent);
} else {
Toast.makeText(MainActivity.this, "Errore: impossibile ottenere i dati del ristorante", Toast.LENGTH_SHORT).show();
}
}
});

}



Подробнее здесь: https://stackoverflow.com/questions/785 ... o-recycler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»