Здравствуйте, уважаемые программисты! Проблема такова: реализовал recyclerView, однако на экране ни один элемент не появился, хотя должны, данные для этого были (Они прогружаются с FireBase)! С помощью логов решил проверить, какие методы работают и не работаю в адаптере. Работали getItemCount и конструктор, onCreateViewHolder и onBindViewHolder не работали. В чём может быть проблема? Убил на это много часов, найти результат не получилось. Узнал, что RecyclerView для оптимизации удаляет View, которые не видно, однако сколько я бы не парился над xml, ничего не вышло. Хочу принять вашу руку помощи!
Ссылка на GitHub:
https://github.com/Olaf-06/SimbirsoftProject.git
DataAdapterSimulators.java
public class DataAdapterSimulators extends RecyclerView.Adapter<ViewHolderSimulators> {
List<Simulators> simulatorsList;
LayoutInflater inflater;
public DataAdapterSimulators(Context context, ArrayList<Simulators> simulatorsList){
this.simulatorsList = simulatorsList;
this.inflater = LayoutInflater.from(context);
Log.d("logmy", "конструктор адаптера");
}
@NonNull
@Override
public ViewHolderSimulators onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Log.d("logmy", "OnCreateViewHolder");
View view = inflater.inflate(R.layout.item_simulators, parent, false);
return new ViewHolderSimulators(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolderSimulators holder, int position) {
Log.d("logmy", "onBindViewHolder");
holder.nameOfSimulator.setText(simulatorsList.get(position).name);
holder.descriptionOfSimulator.setText(simulatorsList.get(position).description);
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("gs://simbirsoftproject.appspot.com/" +
"photoOfUsers").child("simulator" + simulatorsList.get(position).photoID);
final File localFile;
try {
localFile = File.createTempFile("images", "jpg");
storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Bitmap bitmap = BitmapFactory.decodeFile(localFile.getAbsolutePath());
holder.imgSimulator.setImageBitmap(bitmap);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Log.d("logmy", "onFailure: фотка не загрузилась ");
}
});
} catch (IOException e) {
e.printStackTrace();
}
Log.d("logmy", "onBindViewHolder: ставлю на вьюшки значения");
}
@Override
public int getItemCount() {
if(simulatorsList == null) {
Log.d("logmy", "getItemCount: насчитал 0");
return 0;
}
Log.d("logmy", "getItemCount: насчитал несколько");
return simulatorsList.size();
}
}
ViewHolderSimulators.java
public class ViewHolderSimulators extends RecyclerView.ViewHolder {
TextView nameOfSimulator, descriptionOfSimulator;
ImageView imgSimulator;
public ViewHolderSimulators(@NonNull View itemView) {
super(itemView);
nameOfSimulator = (TextView) itemView.findViewById(R.id.nameOfSimulator);
descriptionOfSimulator = (TextView) itemView.findViewById(R.id.descriptionOfSimulator);
imgSimulator = (ImageView) itemView.findViewById(R.id.imgSimulator);
}
}
fragment_simulators.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FragmentSimulators">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/simulators_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/plus" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
item_simulator.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imgSimulator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/nameOfSimulator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Тренажёр"
android:textSize="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imgSimulator"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/descriptionOfSimulator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Описание"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imgSimulator"
app:layout_constraintTop_toBottomOf="@+id/nameSimulator" />
</ScrollView>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</RelativeLayout>