Я хочу получить некоторые данные из FireBase, чтобы заполнить приложение RecyclerView.My: идея выбирает некоторые местоположения из фрагмента карты и затем сохраняет их в базе данных Firebase. Эти сохраненные местоположения отображаются во фрагменте Places, где Я хочу использовать RecylcerView. Когда я запускаю приложение, я получаю следующие ошибки
</p>
<pre><code>08-29 23:01:35.257 25039-25039/com.aplicatiechat.mcristi.firebaseandmapsdemoforlearning E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.aplicatiechat.mcristi.firebaseandmapsdemoforlearning, PID: 25039
com.google.firebase.database.DatabaseException: Class com.aplicatiechat.mcristi.firebaseandmapsdemoforlearning.Places is missing a constructor with no arguments
at com.google.android.gms.internal.zzekq.zze(Unknown Source)
at com.google.android.gms.internal.zzekp.zzb(Unknown Source)
at com.google.android.gms.internal.zzekp.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:22)
at com.firebase.ui.database.ObservableSnapshotArray.getObject(ObservableSnapshotArray.java:141)
at com.firebase.ui.database.CachingObservableSnapshotArray.getObject(CachingObservableSnapshotArray.java:40)
at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:127)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:164)
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)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3529)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1767)
at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:356)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
at android.view.Choreographer.doCallbacks(Choreographer.java:590)
at android.view.Choreographer.doFrame(Choreographer.java:559)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Это мой фрагмент мест:
</p>
<pre><code> public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.places_fragment, container, false);
mRecylcerView = mView.findViewById(R.id.places);
mRecylcerView.setHasFixedSize(true);
mRecylcerView.setLayoutManager(new LinearLayoutManager(getContext()));
return mView;
}
@Override
public void onStart() {
super.onStart();
mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
mDataBase = FirebaseDatabase.getInstance().getReference().child("users").child(mFirebaseUser.getUid());
DatabaseReference places = FirebaseDatabase.getInstance().getReference().child("users").child(mFirebaseUser.getUid()).child("place");
DatabaseReference keys = FirebaseDatabase.getInstance().getReference().child("users").child(mFirebaseUser.getUid()).child("key");
FirebaseIndexRecyclerAdapter<Places,PlacesViewHolder> firebaseRecyclerAdapter = new FirebaseIndexRecyclerAdapter<Places,PlacesViewHolder>(Places.class,R.layout.place_layout,PlacesViewHolder.class,places,keys) {
@Override
protected void populateViewHolder(PlacesViewHolder viewHolder, Places model, int position) {
viewHolder.setLat(model.getLat());
viewHolder.setLon(model.getLon());
}
};
mRecylcerView.setAdapter(firebaseRecyclerAdapter);
}
}
class PlacesViewHolder extends RecyclerView.ViewHolder{
View mView;
private TextView lat;
private TextView lon;
public PlacesViewHolder(View itemView) {
super(itemView);
mView = itemView;
lat = mView.findViewById(R.id.lat_view);
lon = mView.findViewById(R.id.lon_view);
}
public void setLat(String n){
lat.setText(n);
}
public void setLon(String e){
lon.setText(e);
}
}
и вот мой класс Model Places:
</p>
<pre><code>public class Places extends RecyclerView.ViewHolder {
private String lat;
private String lon;
public Places(View itemView) {
super(itemView);
}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLon() {
return lon;
}
public void setLon(String lon) {
this.lon = lon;
}
}
Вот скриншот с моей базой данных:
База данных Firebase