Данные отсутствуют при передаче через адаптер

Я делаю приложение и застрял с адаптером для моего 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;
    }
}

person Ian Smith    schedule 27.01.2018    source источник


Ответы (1)


Вы не должны писать этот код:

this.submissionList = new List<Submission>() { ...

этот код создает новый список отправки, и он равен нулю. просто создайте конструктор и запустите свой submitList в своем адаптере:

Public RecyclerViewAdapter(ArrayList<Submission> submissionList)
{
  this.submissionList = submissionList;
}

а затем вы можете использовать свой список подчинения.

person Reza.Abedini    schedule 27.01.2018
comment
То, на что вы указали, могло вызвать некоторые проблемы, но мне нужно было переключиться на ArrayList вместо List. Это решило все мои проблемы (: Спасибо за помощь - person Ian Smith; 27.01.2018
comment
Добро пожаловать, вы должны проголосовать, если этот ответ поможет вам, спасибо :) - person Reza.Abedini; 28.01.2018
comment
Я сделал, но у меня недостаточно репутации, поэтому он не отображается /: - person Ian Smith; 28.01.2018