android - Firebaserecycleradcape() को FirebaseRecyclerAdapter पर लागू नहीं किया जा सकता है




firebase-realtime-database firebaseui (4)

FirebaseUI का नवीनतम संस्करण (3.x) पिछले संस्करणों की तुलना में FirebaseRecyclerAdapter को आरंभ करने का एक अलग तरीका लागू करता है। FirebaseRecyclerAdapter प्रलेखन का उपयोग करने से:

सबसे पहले, FirebaseRecyclerOptions निर्माण करके एडेप्टर को कॉन्फ़िगर करें। इस मामले में हम अपने चैट उदाहरण के साथ जारी रखेंगे:

 FirebaseRecyclerOptions<Chat> options =
                new FirebaseRecyclerOptions.Builder<Chat>()
                        .setQuery(query, Chat.class)
                        .build();

इसके बाद FirebaseRecyclerAdapter ऑब्जेक्ट बनाएं। प्रत्येक आइटम को प्रदर्शित करने के लिए आपके पास पहले से ही एक ViewHolder उपवर्ग होना चाहिए।

तो, आपके उदाहरण के लिए, आपको कुछ ऐसा करने की आवश्यकता होगी:

FirebaseRecyclerOptions<image_details> options =
        new FirebaseRecyclerOptions.Builder<image_details>()
                .setQuery(myRef, image_details.class)
                .build();

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<image_details, BlogViewHolder>(options) {
    @Override
    public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.individual_row, parent, false);

        return new BlogViewHolder(view);
    }

    @Override
    protected void onBindViewHolder(BlogViewHolder holder, int position, image_details model) {
        // Bind the image_details object to the BlogViewHolder
        // ...
    }
};

अंत में, FirebaseRecyclerAdapter फायरबेस क्वेरी में परिवर्तनों की निगरानी के लिए एक इवेंट श्रोता का उपयोग करता है। डेटा सुनने के लिए, श्रोता को रोकने के लिए adapter.stopListening() adapter.startListening() और adapter.stopListening() कॉल करें। इसे क्रमशः onStart() और onStop() में कॉल करने की अनुशंसा की जाती है। इस पर आगे का विवरण FirebaseRecyclerAdapter जीवनचक्र दस्तावेज में उपलब्ध है।

क्या कोई बता सकता है कि उस विशिष्ट पंक्ति में क्या त्रुटि है।

यहां त्रुटि संदेश दिखाया जा रहा है।

package com.example.souravkumar.sqaurewallpapers;

import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;

/**
 * Created by Sourav Kumar on 11/3/2017.
 */

public class popular extends AppCompatActivity {

    private RecyclerView recyclerView;
    private DatabaseReference myRef;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        myRef = FirebaseDatabase.getInstance().getReference();
        FirebaseRecyclerAdapter<image_details, BlogViewHolder> adapter = new FirebaseRecyclerAdapter<image_details, BlogViewHolder>(
                image_details.class,
                R.layout.individual_row,

                myRef) {
            @Override
            protected void onBindViewHolder(BlogViewHolder holder, int position, image_details model) {
                holder.setDate(model.getDate());
                holder.setUrl(model.getUrl());
            }

            @Override
            public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                return null;
            }
        };

        recyclerView.setAdapter(adapter);

    }

    public static  class BlogViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        ImageView imageView;
        public BlogViewHolder(View itemView) {
            super(itemView);
            textView = (TextView)itemView.findViewById(R.id.date);
            imageView = (ImageView)itemView.findViewById(R.id.imageView);
        }

        public void setDate(Long date) {
            textView.setText(date.toString());
        }

        public void setUrl(String url) {
            Picasso.with(itemView.getContext())
                    .load(url)
                    .resize(50, 50)
                    .centerCrop()
                    .into(imageView);
        }
    }
}

पूरे कोड से लिंक करें


आपने गतिविधि शुरू करने का एक तरीका याद किया। इसे onStart() विधि में जोड़ें:

firebaseRecyclerAdapter.startListening();

मेरे पास एक ही त्रुटि थी और इसने मेरे लिए बहुत अच्छा काम किया। आशा है कि यह किसी की मदद करता है

//loads data into recycler view onstart up
@Override
protected void onStart() {
    super.onStart();

    FirebaseRecyclerOptions<Data> options =
            new FirebaseRecyclerOptions.Builder<Data>()
                    .setQuery(dbReference, Data.class)
                    .build();

    FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Data, DataViewHolder>(options) {
        @Override
        public DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.row, parent, false);

            return new DataViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull DataViewHolder holder, int position, @NonNull Data model) {
            // Bind the image_details object to the BlogViewHolder
            // ...
            holder.setDetails(getApplicationContext(), model.getName(), model.getDepartment(), model.getDescription());
        }
    };



    firebaseRecyclerAdapter.startListening();
    recyclerView.setAdapter(firebaseRecyclerAdapter);

}

यह सही तरीका है:

FirebaseRecyclerOptions<image_details> options =
    new FirebaseRecyclerOptions.Builder<image_details>()
            .setQuery(myRef, image_details.class)
            .build();

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<image_details, BlogViewHolder>(options) {
    @Override
    public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.individual_row, parent, false);

        return new BlogViewHolder(view);
    }

    @Override
    protected void onBindViewHolder(BlogViewHolder holder, int position, image_details model) {
        // Bind the image_details object to the BlogViewHolder
        // ...
    }
};




firebaseui