Правя приложение и останах с адаптер за моя RecyclerView. В основната си дейност (ShowActivity) получавам данни от firebase и ги препращам към RecyclerViewAdapter, който по някакъв начин „губи“ данни. Получавам данни като обект на клас Submission (който има заглавие, текст, автор и няколко други низа) и ако отпечатам submission.title в дейността, работи добре. Въпреки това, когато се опитам да направя адаптер за recyclerView (изпращам списък с изпращания), всички те стават нулеви. Адаптерът преминава и се създават изгледи, но те използват стойности по подразбиране вместо тези, които са събрани от базата данни. Не мога да обясня този тип поведение и се надявам някой да види проблем, който съм пропуснал.
Създавам адаптер тук:
@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;
}
}