मैंने अपने ऐप को फायरस्टोर से जोड़ा है, और मेरे पास टाइमी नामक एक स्ट्रिंग है जो एक तारीख है जिसे चुना जाता है (अप्रासंगिक कैसे) और फायरस्टोर दस्तावेजों में स्ट्रिंग टाइमी की तुलना में।

मैं ऐप को फायरस्टोर आउटपुट को TextView में प्रदर्शित करने में सफल रहा, लेकिन अगर मेरे पास एक ही तारीख के साथ 2 प्रविष्टियां हैं, तो यह हमेशा एक को चुनती है और दूसरे के बारे में भूल जाती है। इसलिए मैंने FirebaseRecyclerAdapter का उपयोग करके डेटा प्रदर्शित करने का प्रयास करने का निर्णय लिया, जो सामान्य रूप से "एकल तिथि प्रविष्टि" प्रदर्शित करता है, लेकिन जैसे ही मैं 2 प्रविष्टियों के साथ एक तिथि का चयन करता हूं, यह ऐप को क्रैश कर देता है। यहां स्रोत कोड है, कोई विचार है कि मैं एक ही तारीख के साथ RecyclerView को दसियों प्रविष्टियां कैसे प्रदर्शित कर सकता हूं, और उन सभी को अलग-अलग प्रविष्टियों के रूप में RecyclerView के अंदर रख सकता हूं?

... passArg वह तिथि है जो किसी भिन्न लेआउट से पारित की जाती है।

static String passedArg;
RecyclerView reserveList;
private static final CollectionReference reservationCollection = FirebaseFirestore.getInstance().collection("reservations");
private static Query reservationsQuery;

private FirebaseFirestore db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_page);
    textView = findViewById(R.id.textView);
    textView2 = findViewById(R.id.textView2);
    textView3 = findViewById(R.id.textView3);
    passedArg = getIntent().getExtras().getString(MESSAGE_KEY);
    textView.setText(passedArg);
    reservationsQuery = reservationCollection.whereEqualTo("timey", passedArg);
    RecyclerView reserveList = (RecyclerView) findViewById(R.id.reserveList);
    reserveList.setLayoutManager(new LinearLayoutManager (this));
    FirestoreRecyclerOptions<Reservations> options =
            new FirestoreRecyclerOptions.Builder<Reservations>()
                    .setQuery(reservationsQuery, Reservations.class)
                    .setLifecycleOwner(this)
                    .build();
    FirestoreRecyclerAdapter<Reservations, ReservationsHolder> adapter = new FirestoreRecyclerAdapter<Reservations, ReservationsHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull ReservationsHolder holder, int position, @NonNull Reservations model) {
            holder.setName(model.getName());
            holder.setTime(model.getTime());
            holder.setCountry(model.getCountry());
            }


        @NonNull
        @Override
        public ReservationsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new ReservationsHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.reservations, parent, false));
        }
    };
        reserveList.setAdapter(adapter);

अगर आपको कोई और कोड चाहिए तो मुझे बताएं।

संपादित करें: क्रैश लॉग:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.nedim.calendar1, PID: 10342
              java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type java.util.Date to String (found in field 'time')
                  at com.google.android.gms.internal.firebase-firestore.zzko.zzb(Unknown Source)
                  at com.google.android.gms.internal.firebase-firestore.zzko.zza(Unknown Source)
                  at com.google.android.gms.internal.firebase-firestore.zzko.zza(Unknown Source)
                  at com.google.android.gms.internal.firebase-firestore.zzko.zzb(Unknown Source)
                  at com.google.android.gms.internal.firebase-firestore.zzko$zza.zza(Unknown Source)
                  at com.google.android.gms.internal.firebase-firestore.zzko.zza(Unknown Source)
                  at com.google.android.gms.internal.firebase-firestore.zzko.zza(Unknown Source)
                  at com.google.firebase.firestore.DocumentSnapshot.zza(Unknown Source)
                  at com.google.firebase.firestore.QueryDocumentSnapshot.zza(Unknown Source)
                  at com.google.firebase.firestore.DocumentSnapshot.toObject(Unknown Source)
                  at com.google.firebase.firestore.QueryDocumentSnapshot.toObject(Unknown Source)
                  at com.firebase.ui.firestore.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:23)
                  at com.firebase.ui.firestore.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:12)
                  at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:35)
                  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)
                  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.onLayout(RecyclerView.java:4082)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
                  at com.android.internal.policy.DecorView.onLayout(DecorView.java:755)
                  at android.view.View.layout(View.java:17572)
                  at android.view.ViewGroup.layout(ViewGroup.java:5656)
                  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2429)
                  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2149)
                  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1306)
                  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6579)
                  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
                  at android.view.Choreographer.doCallbacks(Choreographer.java:683)
                  at android.view.Choreographer.doFrame(Choreographer.java:619)
                  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
                  at android.os.Handler.handleCallback(Handler.java:751)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6316)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
W/Firestore: (0.6.6-dev) [OnlineStateTracker]: Could not reach Firestore backend.
2
victiMusPrime 30 अप्रैल 2018, 03:11

1 उत्तर

सबसे बढ़िया उत्तर

आपको निम्न त्रुटि मिल रही है:

java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type java.util.Date to String (found in field 'time')

क्योंकि आपके फायरस्टोर डेटाबेस में, आपके पास time नाम की एक संपत्ति है जो Date प्रकार की है और स्ट्रिंग नहीं है। तो इसे हल करने के लिए, कृपया देखें आप सर्वर टाइमस्टैम्प को एक में कैसे स्टोर कर सकते हैं Firestore डेटाबेसऔर आप सही तरीके से कैसे कर सकते हैं यह।

यदि आप रुचि रखते हैं, यह है कि कैसे आप Cloud Firestore डेटाबेस से डेटा a को सही ढंग से पुनर्प्राप्त कर सकते हैं और FirestoreRecyclerAdapter का उपयोग करके इसे RecyclerView में प्रदर्शित कर सकते हैं।

1
Alex Mamo 2 मई 2018, 14:29