Я пытаюсь загрузить данные из облачного пожарного хранилища, используя FirestoreRecylerView, но каждый раз, когда я открываю фрагмент, содержащий представление, приложение вылетает. Я попытался посмотреть, но не могу найти ничего, чтобы помочь мне.
PeerInfoRecylerAdapter.java
public class PeerInfoRecyclerAdapter extends FirestoreRecyclerAdapter<UserInfo,PeerInfoRecyclerAdapter.MyViewHolder> {
public PeerInfoRecyclerAdapter(@NonNull FirestoreRecyclerOptions<UserInfo> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull UserInfo model) {
holder.authorName.setText(model.getName());
holder.authorRno.setText(model.getRno());
holder.authorDept.setText(model.getDept());
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.peer_list_item_card, parent, false);
return new MyViewHolder(itemView);
}
class MyViewHolder extends RecyclerView.ViewHolder{
private TextView authorName,authorRno,authorDept;
private MyViewHolder(View view)
{
super(view);
authorName = (TextView) view.findViewById(R.id.peerAuthorText);
authorRno = (TextView) view.findViewById(R.id.peerAuthorRno);
authorDept= (TextView) view.findViewById(R.id.peerDept);
}
}
@Override
public int getItemCount() {
return 1;
}
}
FragmentDeptOther.java
public class FragmentDeptOther extends Fragment{
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference userRef = db.collection("users");
private PeerInfoRecyclerAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_dept_other,viewGroup, false);
RecyclerView peerRecycler;
peerRecycler = (RecyclerView) view.findViewById(R.id.peer_recyler);
Query query = userRef;
FirestoreRecyclerOptions<UserInfo> options = new FirestoreRecyclerOptions.Builder<UserInfo>()
.setQuery(query,UserInfo.class).build();
adapter = new PeerInfoRecyclerAdapter(options);
peerRecycler.setHasFixedSize(true);
peerRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));
peerRecycler.setAdapter(adapter);
return view;
}
@Override
public void onStart() {
adapter.startListening();
super.onStart();
}
@Override
public void onStop() {
adapter.stopListening();
super.onStop();
}
}
Logcat
Я понятия не имею, что происходит.
01-08 16:29:13.795 19871-19871/com.example.root.makingit E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.root.makingit, PID: 19871
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.firebase.ui.common.BaseObservableSnapshotArray.getSnapshot(BaseObservableSnapshotArray.java:70)
at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:52)
at com.firebase.ui.firestore.FirestoreRecyclerAdapter.getItem(FirestoreRecyclerAdapter.java:83)
at com.firebase.ui.firestore.FirestoreRecyclerAdapter.onBindViewHolder(FirestoreRecyclerAdapter.java:125)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6714)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5647)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)