Я делаю приложение и застрял с адаптером для моего RecyclerView. В моей основной деятельности (ShowActivity) я получаю данные из firebase и перенаправляю их в RecyclerViewAdapter, который каким-то образом «теряет» данные. Я получаю данные как объект класса Submission (у которого есть заголовок, текст, автор и несколько других строк), и если я распечатаю submit.title в действии, он отлично работает. Однако, когда я пытаюсь сделать адаптер для recyclerView (отправляю список Submissions), все они становятся нулевыми. Адаптер работает, и представления создаются, но они используют значения по умолчанию, а не те, которые собираются из базы данных. Я не могу объяснить такое поведение и надеюсь, что кто-то увидит проблему, которую я пропустил.
Я создаю адаптер здесь:
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s
Submission submission = dataSnapshot.getValue(Submission.class);
if (submission.title != null) {
submissionList.add(submission);
adapter = new RecyclerViewAdapter(submissionList);
if (recyclerView.getAdapter() != null) {
recyclerView.swapAdapter(adapter, true);
} else {
recyclerView.setAdapter(adapter);
}
}
}
Это адаптер:
package com.example.lenovo.colabwriter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class RecyclerViewAdapter extends
RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
private List<Submission> submissionList;
public RecyclerViewAdapter (final List<Submission> submissionList) {
this.submissionList = new List<Submission>() {
@Override
public int size() {
return submissionList.size();
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean contains(Object o) {
return false;
}
@NonNull
@Override
public Iterator<Submission> iterator() {
return null;
}
@NonNull
@Override
public Object[] toArray() {
return new Object[0];
}
@NonNull
@Override
public <T> T[] toArray(@NonNull T[] ts) {
return null;
}
@Override
public boolean add(Submission submission) {
return false;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(@NonNull Collection<?> collection) {
return false;
}
@Override
public boolean addAll(@NonNull Collection<? extends Submission> collection) {
return false;
}
@Override
public boolean addAll(int i, @NonNull Collection<? extends Submission> collection) {
return false;
}
@Override
public boolean removeAll(@NonNull Collection<?> collection) {
return false;
}
@Override
public boolean retainAll(@NonNull Collection<?> collection) {
return false;
}
@Override
public void clear() {
}
@Override
public Submission get(int i) {
return null;
}
@Override
public Submission set(int i, Submission submission) {
return null;
}
@Override
public void add(int i, Submission submission) {
}
@Override
public Submission remove(int i) {
return null;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@NonNull
@Override
public ListIterator<Submission> listIterator() {
return null;
}
@NonNull
@Override
public ListIterator<Submission> listIterator(int i) {
return null;
}
@NonNull
@Override
public List<Submission> subList(int i, int i1) {
return null;
}
};
this.submissionList = submissionList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Submission currentSubmission = submissionList.get(position);
Log.i("submissionCheck", String.valueOf(currentSubmission));
if (currentSubmission != null) {
holder.title.setText(currentSubmission.title);
holder.text.setText(currentSubmission.text);
holder.author.setText(currentSubmission.author);
}
}
@Override
public int getItemCount() {
return submissionList.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView title, text, author;
public ViewHolder (View view) {
super (view);
title = view.findViewById(R.id.title);
text = view.findViewById(R.id.text);
author = view.findViewById(R.id.author);
}
}
}
Это класс отправки:
package com.example.lenovo.colabwriter;
public class Submission {
public String title, text, author, time, length;
public Submission () {
}
public Submission (String title, String text, String author, String time, String length) {
this.title = title;
this.text = text;
this.author = author;
this.time = time;
this.length = length;
}
}