Java源码示例:com.firebase.ui.database.FirebaseRecyclerAdapter

示例1
private FirebaseRecyclerAdapter<Post, PostViewHolder> getFirebaseRecyclerAdapter(Query query) {
    FirebaseRecyclerOptions<Post> options = new FirebaseRecyclerOptions.Builder<Post>()
            .setLifecycleOwner(this)
            .setQuery(query, Post.class)
            .build();

    return new FirebaseRecyclerAdapter<Post, PostViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull PostViewHolder postViewHolder,
                                        int position,
                                        @NonNull Post post) {
            setupPost(postViewHolder, post, position, null);
        }

        @Override
        public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.post_item, parent, false);

            return new PostViewHolder(view);
        }
    };
}
 
示例2
@Override
public void onStart() {
    super.onStart();
    final FirebaseRecyclerAdapter<ChatMessage, ChatViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<ChatMessage, ChatViewHolder>(
                    ChatMessage.class,
                    R.layout.message_row,
                    ChatViewHolder.class,
                    dbChatRef) {
                @Override
                protected void populateViewHolder(ChatViewHolder viewHolder, ChatMessage model, int position) {
                    final String chatKey = getRef(position).getKey();

                    viewHolder.setMessageText(model.getMessageText());
                    viewHolder.setMessageTime(model.getMessageTime());
                    viewHolder.setUserName(model.getMessageUser());
                    viewHolder.setUserProfileImage(model.getProfileUrl(), getApplicationContext());
                }
            };
    chatRecView.setAdapter(firebaseRecyclerAdapter);
}
 
示例3
private void populateRecyclerView() {

        //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
        final FirebaseRecyclerAdapter<SingleProductModel,MovieViewHolder> adapter = new FirebaseRecyclerAdapter<SingleProductModel, MovieViewHolder>(
                SingleProductModel.class,
                R.layout.cart_item_layout,
                MovieViewHolder.class,
                //referencing the node where we want the database to store the data from our Object
                mDatabaseReference.child("cart").child(mobile).getRef()
        ) {
            @Override
            protected void populateViewHolder(final MovieViewHolder viewHolder, final SingleProductModel model, final int position) {
                if(tv_no_item.getVisibility()== View.VISIBLE){
                    tv_no_item.setVisibility(View.GONE);
                }
                viewHolder.cardname.setText(model.getPrname());
                viewHolder.cardprice.setText("₹ "+model.getPrprice());
                viewHolder.cardcount.setText("Quantity : "+model.getNo_of_items());
                Picasso.with(Cart.this).load(model.getPrimage()).into(viewHolder.cardimage);

                totalcost += model.getNo_of_items()*Float.parseFloat(model.getPrprice());
                totalproducts += model.getNo_of_items();
                cartcollect.add(model);

                viewHolder.carddelete.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(Cart.this,getItem(position).getPrname(),Toast.LENGTH_SHORT).show();
                        getRef(position).removeValue();
                        session.decreaseCartValue();
                        startActivity(new Intent(Cart.this,Cart.class));
                        finish();
                    }
                });
            }
        };
        mRecyclerView.setAdapter(adapter);
    }
 
示例4
@NonNull
@Override
protected FirebaseRecyclerAdapter<Chat, ChatHolder> newAdapter() {
    mChatIndicesRef = FirebaseDatabase.getInstance()
            .getReference()
            .child("chatIndices")
            .child(FirebaseAuth.getInstance().getCurrentUser().getUid());

    FirebaseRecyclerOptions<Chat> options =
            new FirebaseRecyclerOptions.Builder<Chat>()
                    .setIndexedQuery(
                            mChatIndicesRef.limitToFirst(50), sChatQuery.getRef(), Chat.class)
                    .setLifecycleOwner(this)
                    .build();

    return new FirebaseRecyclerAdapter<Chat, ChatHolder>(options) {
        @NonNull
        @Override
        public ChatHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new ChatHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.message, parent, false));
        }

        @Override
        protected void onBindViewHolder(@NonNull ChatHolder holder, int position, @NonNull Chat model) {
            holder.bind(model);
        }

        @Override
        public void onDataChanged() {
            // If there are no chat messages, show a view that invites the user to add a message.
            mEmptyListMessage.setVisibility(getItemCount() == 0 ? View.VISIBLE : View.GONE);
        }
    };
}
 
示例5
@NonNull
protected RecyclerView.Adapter newAdapter() {
    FirebaseRecyclerOptions<Chat> options =
            new FirebaseRecyclerOptions.Builder<Chat>()
                    .setQuery(sChatQuery, Chat.class)
                    .setLifecycleOwner(this)
                    .build();

    return new FirebaseRecyclerAdapter<Chat, ChatHolder>(options) {
        @Override
        public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new ChatHolder(LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.message, parent, false));
        }

        @Override
        protected void onBindViewHolder(@NonNull ChatHolder holder, int position, @NonNull Chat model) {
            holder.bind(model);
        }

        @Override
        public void onDataChanged() {
            // If there are no chat messages, show a view that invites the user to add a message.
            mEmptyListMessage.setVisibility(getItemCount() == 0 ? View.VISIBLE : View.GONE);
        }
    };
}
 
示例6
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cards);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    //check Internet Connection
    new CheckInternetConnection(this).checkConnection();

    //Initializing our Recyclerview
    mRecyclerView = findViewById(R.id.my_recycler_view);
    tv_no_item = findViewById(R.id.tv_no_cards);


    if (mRecyclerView != null) {
        //to enable optimization of recyclerview
        mRecyclerView.setHasFixedSize(true);
    }
    //using staggered grid pattern in recyclerview
    mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
    final FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder> adapter = new FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder>(
            GenericProductModel.class,
            R.layout.cards_cardview_layout,
            Cards.MovieViewHolder.class,
            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("Products").child("Bags").getRef()
    ) {
        @Override
        protected void populateViewHolder(final Cards.MovieViewHolder viewHolder, final GenericProductModel model, final int position) {
            if (tv_no_item.getVisibility() == View.VISIBLE) {
                tv_no_item.setVisibility(View.GONE);
            }
            viewHolder.cardname.setText(model.getCardname());
            viewHolder.cardprice.setText("₹ " + Float.toString(model.getCardprice()));
            Picasso.with(Bags.this).load(model.getCardimage()).into(viewHolder.cardimage);

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Bags.this, IndividualProduct.class);
                    intent.putExtra("product", getItem(position));
                    startActivity(intent);
                }
            });
        }
    };


    mRecyclerView.setAdapter(adapter);

}
 
示例7
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cards);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    //check Internet Connection
    new CheckInternetConnection(this).checkConnection();

    //Initializing our Recyclerview
    mRecyclerView = findViewById(R.id.my_recycler_view);
    tv_no_item = findViewById(R.id.tv_no_cards);


    if (mRecyclerView != null) {
        //to enable optimization of recyclerview
        mRecyclerView.setHasFixedSize(true);
    }
    //using staggered grid pattern in recyclerview
    mLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
    final FirebaseRecyclerAdapter<GenericProductModel,MovieViewHolder> adapter = new FirebaseRecyclerAdapter<GenericProductModel, MovieViewHolder>(
            GenericProductModel.class,
            R.layout.cards_cardview_layout,
            MovieViewHolder.class,
            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("Products").child("Cards").getRef()
    ) {
        @Override
        protected void populateViewHolder(final MovieViewHolder viewHolder, final GenericProductModel model, final int position) {
            if(tv_no_item.getVisibility()== View.VISIBLE){
                tv_no_item.setVisibility(View.GONE);
            }
            viewHolder.cardname.setText(model.getCardname());
            viewHolder.cardprice.setText("₹ "+Float.toString(model.getCardprice()));
            Picasso.with(Cards.this).load(model.getCardimage()).into(viewHolder.cardimage);

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Cards.this,IndividualProduct.class);
                    intent.putExtra("product",getItem(position));
                    startActivity(intent);
                }
            });
        }
    };



    mRecyclerView.setAdapter(adapter);

}
 
示例8
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cards);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    //check Internet Connection
    new CheckInternetConnection(this).checkConnection();

    //Initializing our Recyclerview
    mRecyclerView = findViewById(R.id.my_recycler_view);
    tv_no_item = findViewById(R.id.tv_no_cards);


    if (mRecyclerView != null) {
        //to enable optimization of recyclerview
        mRecyclerView.setHasFixedSize(true);
    }
    //using staggered grid pattern in recyclerview
    mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
    final FirebaseRecyclerAdapter<GenericProductModel,Cards.MovieViewHolder> adapter = new FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder>(
            GenericProductModel.class,
            R.layout.cards_cardview_layout,
            Cards.MovieViewHolder.class,
            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("Products").child("Tshirt").getRef()
    ) {
        @Override
        protected void populateViewHolder(final Cards.MovieViewHolder viewHolder, final GenericProductModel model, final int position) {
            if(tv_no_item.getVisibility()== View.VISIBLE){
                tv_no_item.setVisibility(View.GONE);
            }
            viewHolder.cardname.setText(model.getCardname());
            viewHolder.cardprice.setText("₹ "+Float.toString(model.getCardprice()));
            Picasso.with(Tshirts.this).load(model.getCardimage()).into(viewHolder.cardimage);

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Tshirts.this,IndividualProduct.class);
                    intent.putExtra("product",getItem(position));
                    startActivity(intent);
                }
            });
        }
    };



    mRecyclerView.setAdapter(adapter);

}
 
示例9
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cards);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    //check Internet Connection
    new CheckInternetConnection(this).checkConnection();

    //Initializing our Recyclerview
    mRecyclerView = findViewById(R.id.my_recycler_view);
    tv_no_item = findViewById(R.id.tv_no_cards);


    if (mRecyclerView != null) {
        //to enable optimization of recyclerview
        mRecyclerView.setHasFixedSize(true);
    }
    //using staggered grid pattern in recyclerview
    mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
    final FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder> adapter = new FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder>(
            GenericProductModel.class,
            R.layout.cards_cardview_layout,
            Cards.MovieViewHolder.class,
            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("Products").child("Stationary").getRef()
    ) {
        @Override
        protected void populateViewHolder(final Cards.MovieViewHolder viewHolder, final GenericProductModel model, final int position) {
            if (tv_no_item.getVisibility() == View.VISIBLE) {
                tv_no_item.setVisibility(View.GONE);
            }
            viewHolder.cardname.setText(model.getCardname());
            viewHolder.cardprice.setText("₹ " + Float.toString(model.getCardprice()));
            Picasso.with(Stationary.this).load(model.getCardimage()).into(viewHolder.cardimage);

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Stationary.this, IndividualProduct.class);
                    intent.putExtra("product", getItem(position));
                    startActivity(intent);
                }
            });
        }
    };


    mRecyclerView.setAdapter(adapter);

}
 
示例10
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cards);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    //check Internet Connection
    new CheckInternetConnection(this).checkConnection();


    //Initializing our Recyclerview
    mRecyclerView = findViewById(R.id.my_recycler_view);
    tv_no_item = findViewById(R.id.tv_no_cards);


    if (mRecyclerView != null) {
        //to enable optimization of recyclerview
        mRecyclerView.setHasFixedSize(true);
    }
    //using staggered grid pattern in recyclerview
    mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
    final FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder> adapter = new FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder>(
            GenericProductModel.class,
            R.layout.cards_cardview_layout,
            Cards.MovieViewHolder.class,
            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("Products").child("Calendar").getRef()
    ) {
        @Override
        protected void populateViewHolder(final Cards.MovieViewHolder viewHolder, final GenericProductModel model, final int position) {
            if (tv_no_item.getVisibility() == View.VISIBLE) {
                tv_no_item.setVisibility(View.GONE);
            }
            viewHolder.cardname.setText(model.getCardname());
            viewHolder.cardprice.setText("₹ " + Float.toString(model.getCardprice()));
            Picasso.with(Calendars.this).load(model.getCardimage()).into(viewHolder.cardimage);

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Calendars.this, IndividualProduct.class);
                    intent.putExtra("product", getItem(position));
                    startActivity(intent);
                }
            });
        }
    };


    mRecyclerView.setAdapter(adapter);

}
 
示例11
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cards);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    //check Internet Connection
    new CheckInternetConnection(this).checkConnection();

    //Initializing our Recyclerview
    mRecyclerView = findViewById(R.id.my_recycler_view);
    tv_no_item = findViewById(R.id.tv_no_cards);


    if (mRecyclerView != null) {
        //to enable optimization of recyclerview
        mRecyclerView.setHasFixedSize(true);
    }
    //using staggered grid pattern in recyclerview
    mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //Say Hello to our new FirebaseUI android Element, i.e., FirebaseRecyclerAdapter
    final FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder> adapter = new FirebaseRecyclerAdapter<GenericProductModel, Cards.MovieViewHolder>(
            GenericProductModel.class,
            R.layout.cards_cardview_layout,
            Cards.MovieViewHolder.class,
            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("Products").child("Keychain").getRef()
    ) {
        @Override
        protected void populateViewHolder(final Cards.MovieViewHolder viewHolder, final GenericProductModel model, final int position) {
            if (tv_no_item.getVisibility() == View.VISIBLE) {
                tv_no_item.setVisibility(View.GONE);
            }
            viewHolder.cardname.setText(model.getCardname());
            viewHolder.cardprice.setText("₹ " + Float.toString(model.getCardprice()));
            Picasso.with(Keychains.this).load(model.getCardimage()).into(viewHolder.cardimage);

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Keychains.this, IndividualProduct.class);
                    intent.putExtra("product", getItem(position));
                    startActivity(intent);
                }
            });
        }
    };


    mRecyclerView.setAdapter(adapter);

}
 
示例12
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    final View view = inflater.inflate(R.layout.fragment_chat, container, false);

    String currentUserId = FirebaseAuth.getInstance().getCurrentUser().getUid();

    // Initialize Chat Database

    DatabaseReference chatDatabase = FirebaseDatabase.getInstance().getReference().child("Chat").child(currentUserId);
    chatDatabase.keepSynced(true); // For offline use

    // RecyclerView related

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);

    RecyclerView recyclerView = view.findViewById(R.id.chat_recycler);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(linearLayoutManager);

    DividerItemDecoration mDividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), linearLayoutManager.getOrientation());
    recyclerView.addItemDecoration(mDividerItemDecoration);

    // Initializing adapter

    FirebaseRecyclerOptions<Chat> options = new FirebaseRecyclerOptions.Builder<Chat>().setQuery(chatDatabase.orderByChild("timestamp"), Chat.class).build();

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

            return new ChatHolder(getActivity(), view, getContext());
        }

        @Override
        protected void onBindViewHolder(final ChatHolder holder, int position, final Chat model)
        {
            final String userid = getRef(position).getKey();

            holder.setHolder(userid, model.getMessage(), model.getTimestamp(), model.getSeen());
            holder.getView().setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    Intent chatIntent = new Intent(getContext(), ChatActivity.class);
                    chatIntent.putExtra("userid", userid);
                    startActivity(chatIntent);
                }
            });
        }

        @Override
        public void onDataChanged()
        {
            super.onDataChanged();

            TextView text = view.findViewById(R.id.f_chat_text);

            if(adapter.getItemCount() == 0)
            {
                text.setVisibility(View.VISIBLE);
            }
            else
            {
                text.setVisibility(View.GONE);
            }
        }
    };

    recyclerView.setAdapter(adapter);
    return view;
}
 
示例13
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_users);

    // RecyclerView related

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());

    RecyclerView recyclerView = findViewById(R.id.users_recycler);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(linearLayoutManager);

    DividerItemDecoration mDividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), linearLayoutManager.getOrientation());
    recyclerView.addItemDecoration(mDividerItemDecoration);

    // Initializing Users database

    DatabaseReference usersDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
    usersDatabase.keepSynced(true); // For offline use

    // Initializing adapter

    FirebaseRecyclerOptions<User> options = new FirebaseRecyclerOptions.Builder<User>().setQuery(usersDatabase.orderByChild("name"), User.class).build();

    adapter = new FirebaseRecyclerAdapter<User, UserHolder>(options)
    {
        @Override
        protected void onBindViewHolder(final UserHolder holder, int position, User model)
        {
            final String userid = getRef(position).getKey();

            holder.setHolder(userid);
            holder.getView().setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    Intent userProfileIntent = new Intent(UsersActivity.this, ProfileActivity.class);
                    userProfileIntent.putExtra("userid", userid);
                    startActivity(userProfileIntent);
                }
            });
        }

        @Override
        public UserHolder onCreateViewHolder(ViewGroup parent, int viewType)
        {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.user, parent, false);

            return new UserHolder(UsersActivity.this, view, getApplicationContext());
        }
    };

    recyclerView.setAdapter(adapter);
}
 
示例14
private void setupPost(final PostViewHolder postViewHolder, final Post post, final int position, final String inPostKey) {
    postViewHolder.setPhoto(post.getThumb_url());
    postViewHolder.setText(post.getText());
    postViewHolder.setTimestamp(DateUtils.getRelativeTimeSpanString(
            (long) post.getTimestamp()).toString());
    final String postKey;
    if (mAdapter instanceof FirebaseRecyclerAdapter) {
        postKey = ((FirebaseRecyclerAdapter) mAdapter).getRef(position).getKey();
    } else {
        postKey = inPostKey;
    }

    Author author = post.getAuthor();
    postViewHolder.setAuthor(author.getFull_name(), author.getUid());
    postViewHolder.setIcon(author.getProfile_picture(), author.getUid());

    ValueEventListener likeListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            postViewHolder.setNumLikes(dataSnapshot.getChildrenCount());
            if (dataSnapshot.hasChild(FirebaseUtil.getCurrentUserId())) {
                postViewHolder.setLikeStatus(PostViewHolder.LikeStatus.LIKED, getActivity());
            } else {
                postViewHolder.setLikeStatus(PostViewHolder.LikeStatus.NOT_LIKED, getActivity());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    };
    FirebaseUtil.getLikesRef().child(postKey).addValueEventListener(likeListener);
    postViewHolder.mLikeListener = likeListener;

    postViewHolder.setPostClickListener(new PostViewHolder.PostClickListener() {
        @Override
        public void showComments() {
            Log.d(TAG, "Comment position: " + position);
            mListener.onPostComment(postKey);
        }

        @Override
        public void toggleLike() {
            Log.d(TAG, "Like position: " + position);
            mListener.onPostLike(postKey);
        }
    });
}
 
示例15
@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);//important thing!!!for sign out!!!
    FirebaseRecyclerAdapter<Blog, BloViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BloViewHolder>(
            Blog.class,
            R.layout.blog_row,
            BloViewHolder.class,
            mDatabase) {
        @Override
        protected void populateViewHolder(final BloViewHolder viewHolder, final Blog model, final int position) {
            final String post_key = getRef(position).getKey();

            viewHolder.setTitle(model.getTitle());
            viewHolder.setDesc(model.getDESCRIPTION());
            viewHolder.setUsername(model.getUsername());
            viewHolder.setImage(getApplicationContext(), model.getIMAGE());
            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(), "You just cliked on blog " + viewHolder.post_title.getText(), Toast.LENGTH_LONG).show();
                }
            });
            viewHolder.setLikeBtn(post_key);
            viewHolder.mLikebtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    mProcessLike = true;

                    mDatabaseLike.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if (mProcessLike) {

                                if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {

                                    mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();

                                    mProcessLike = false;

                                } else {

                                    mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue("RandomValue");

                                    mProcessLike = false;

                                }
                            }

                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });

                }
            });
        }
    };
    mBlogList.setAdapter(firebaseRecyclerAdapter);
}
 
示例16
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // Set up Layout Manager, reverse layout
    mManager = new LinearLayoutManager(getActivity());
    mManager.setReverseLayout(true);
    mManager.setStackFromEnd(true);
    mRecycler.setLayoutManager(mManager);

    // Set up FirebaseRecyclerAdapter with the Query
    Query postsQuery = getQuery(mDatabase);

    FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<Post>()
            .setQuery(postsQuery, Post.class)
            .build();

    mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(options) {

        @Override
        public PostViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
            return new PostViewHolder(inflater.inflate(R.layout.item_post, viewGroup, false));
        }

        @Override
        protected void onBindViewHolder(PostViewHolder viewHolder, int position, final Post model) {
            final DatabaseReference postRef = getRef(position);

            // Set click listener for the whole post view
            final String postKey = postRef.getKey();
            viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Launch PostDetailActivity
                    Intent intent = new Intent(getActivity(), PostDetailActivity.class);
                    intent.putExtra(PostDetailActivity.EXTRA_POST_KEY, postKey);
                    startActivity(intent);
                }
            });

            // Determine if the current user has liked this post and set UI accordingly
            if (model.stars.containsKey(getUid())) {
                viewHolder.starView.setImageResource(R.drawable.ic_toggle_star_24);
            } else {
                viewHolder.starView.setImageResource(R.drawable.ic_toggle_star_outline_24);
            }

            // Bind Post to ViewHolder, setting OnClickListener for the star button
            viewHolder.bindToPost(model, new View.OnClickListener() {
                @Override
                public void onClick(View starView) {
                    // Need to write to both places the post is stored
                    DatabaseReference globalPostRef = mDatabase.child("posts").child(postRef.getKey());
                    DatabaseReference userPostRef = mDatabase.child("user-posts").child(model.uid).child(postRef.getKey());

                    // Run two transactions
                    onStarClicked(globalPostRef);
                    onStarClicked(userPostRef);
                }
            });
        }
    };
    mRecycler.setAdapter(mAdapter);
}
 
示例17
@Override
public void setMessageAdapter(FirebaseRecyclerAdapter<FriendlyMessage, ChatPresenterImpl.MessageViewHolder> adapter) {
    messageRecyclerView.setAdapter(adapter);
}
 
示例18
private void configureFirebaseAdapter() {
    DatabaseReference mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
    mFirebaseGroupReference = mFirebaseDatabaseReference.child(String.valueOf(mGroup.getCodGrupo()));
    checkIfGroupHasMessages();
    mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage,
            MessageViewHolder>(
            FriendlyMessage.class,
            R.layout.item_message,
            MessageViewHolder.class,
            mFirebaseGroupReference.child(MESSAGES_CHILD)) {
        @Override
        protected void populateViewHolder(MessageViewHolder viewHolder,
                                          FriendlyMessage friendlyMessage, int position) {
            mView.setProgressBarVisibility(View.GONE);
            mView.setEmptyViewVisibility(View.GONE);


            if (friendlyMessage.getEmail().equals(mUser.getEmail())) {
                viewHolder.messageLayout.setVisibility(View.GONE);
                viewHolder.ounMessageLayout.setVisibility(View.VISIBLE);
                viewHolder.ounMessageTextView.setText(friendlyMessage.getText());
                viewHolder.ounTimeTextView.setText(DateUtils.getRelativeTimeSpanString(friendlyMessage.getTime()));
            } else {
                viewHolder.messageLayout.setVisibility(View.VISIBLE);
                viewHolder.ounMessageLayout.setVisibility(View.GONE);
                viewHolder.messageTextView.setText(friendlyMessage.getText());
                viewHolder.messengerTextView.setText(friendlyMessage.getName());
                viewHolder.timeTextView.setText(DateUtils.getRelativeTimeSpanString(friendlyMessage.getTime()));
            }
            Picasso.with(mContext)
                    .load(friendlyMessage.getPhotoUrl())
                    .placeholder(R.drawable.avatar_placeholder)
                    .error(R.drawable.avatar_placeholder)
                    .into(viewHolder.messengerImageView);
        }
    };

    mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            int friendlyMessageCount = mFirebaseAdapter.getItemCount();
            int lastVisiblePosition = mView.getLastPositionVisible();

            if (lastVisiblePosition == -1 || (positionStart >= (friendlyMessageCount - 1) &&
                    lastVisiblePosition == (positionStart - 1))) {
                mView.scrollRecyclerToPosition(positionStart);
            }
            mInteractor.saveItemCount(mGroup.getCodGrupo(), mFirebaseAdapter.getItemCount());
        }
    });

    mView.setMessageAdapter(mFirebaseAdapter);
}
 
示例19
@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);

    if (mAuth.getCurrentUser() != null) {
        final DatabaseReference currentUserNotification = mDatabaseNotifications.child(mAuth.getCurrentUser().getUid());
        FirebaseRecyclerAdapter<Notification, NotificationViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Notification, NotificationViewHolder>(

                Notification.class,
                R.layout.notification_row,
                NotificationViewHolder.class,
                currentUserNotification

        ) {
            @Override
            protected void populateViewHolder(NotificationViewHolder viewHolder, final Notification model, int position) {

                Log.d(TAG, "loading view " + position);
                Log.d(TAG, model.getSender_username());
                final String product_id = getRef(position).getKey();
                viewHolder.setAction(model.getProduct_name(), model.getAction(), model.getSender_username());
                viewHolder.setTime(model.getTime());
                viewHolder.setImage(getApplicationContext(), model.getProduct_image());

                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent productDetailIntent = new Intent();
                        productDetailIntent.setClass(ProfileActivity.this, ProductDetailActivity.class);
                        productDetailIntent.putExtra("product_id", product_id);
                        Log.d(TAG + " product_id", product_id);
                        productDetailIntent.putExtra("colorNo", model.getColorNo());
                        Log.d(TAG + " colorNo", model.getColorNo() + "");
                        startActivity(productDetailIntent);
                    }
                });

                Log.d(TAG, "finish loading view");
            }
        };

        Log.d(TAG, " Notification : " + mDatabaseNotifications.child(mAuth.getCurrentUser().getUid()));
        mNotificaitonList.setAdapter(firebaseRecyclerAdapter);
    }
}
 
示例20
@Nullable
@Override
public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final View v = inflater.inflate(R.layout.fragment_list_developers, container, false);
    RecyclerView recyclerView = v.findViewById(R.id.rv_list_devs);
    Query query = FirebaseDatabase.getInstance()
            .getReference("Developers");
    FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder()
            .setQuery(query, Developer.class)
            .build();
    query.keepSynced(true);

    String s = null;

    adapter = new FirebaseRecyclerAdapter<Developer, ListContributorsHolder>(options) {
        @NonNull
        @Override
        public ListContributorsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_developers, parent, false);
            return new ListContributorsHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull ListContributorsHolder holder, int position, @NonNull Developer dev) {
            String key = getRef(position).getKey();
            holder.bind(
                    dev.getEmail(),
                    dev.getName(),
                    dev.getPhotoUrl(),
                    dev.getXdaUrl(),
                    dev.getGitId(),
                    dev.getDonationUrl(),
                    dev.getDescription(),
                    key
            );
        }

        @Override
        public void onDataChanged() {
            super.onDataChanged();
            ProgressBar progressBar = v.findViewById(R.id.pb_builds);
            TextView textView = v.findViewById(R.id.tv_no_build);
            new FirebaseProgressBar(progressBar, textView, adapter, "Developers");
        }
    };
    LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(adapter);

    ProgressBar progressBar = v.findViewById(R.id.pb_builds);
    TextView textView = v.findViewById(R.id.tv_no_build);
    new FirebaseProgressBar(progressBar, textView, adapter, "Developers");

    return v;
}
 
示例21
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_builds_common, container, false);

    RecyclerView lvBuilds = view.findViewById(R.id.lv_builds);
    Query query;
    if (filterQuery != null) {
        query = FirebaseDatabase.getInstance().getReference().child(reference).orderByChild(filterQuery).equalTo(equalTo);

    } else {
        query = FirebaseDatabase.getInstance()
                .getReference(reference);
    }
    query.keepSynced(true);
    FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder()
            .setQuery(query, Pbuild.class)
            .build();
    adapter = new FirebaseRecyclerAdapter<Pbuild, BuildsHolder>(options) {
        @NonNull
        @Override
        public BuildsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_build_common, parent, false);
            if (filterQuery != null) {
                return new BuildsHolder(view, reference, true, getContext());
            } else {
                return new BuildsHolder(view, reference, false, getContext());
            }
        }

        @Override
        protected void onBindViewHolder(@NonNull BuildsHolder holder, int position, @NonNull Pbuild model) {
            holder.bind(
                    model.getEmail(),
                    model.getModel(),
                    model.getBoard(),
                    model.getDate(),
                    model.getBrand(),
                    model.getDeveloperEmail(),
                    model.getRejector(),
                    model.getNote(),
                    model.getUrl());
        }

        @Override
        public void onDataChanged() {
            super.onDataChanged();
            ProgressBar();
        }
    };
    ProgressBar();
    LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    layoutManager.setReverseLayout(true);
    layoutManager.setStackFromEnd(true);
    lvBuilds.setLayoutManager(layoutManager);
    lvBuilds.setAdapter(adapter);
    return view;

}
 
示例22
public FirebaseProgressBar(@NonNull final ProgressBar progressBar, @NonNull final TextView textView, @NonNull FirebaseRecyclerAdapter adapter, @NonNull final String refId) {
    start(progressBar, textView, adapter, refId, false, null, null);
}
 
示例23
public FirebaseProgressBar(@NonNull final ProgressBar progressBar, @NonNull final TextView textView, @NonNull FirebaseRecyclerAdapter adapter, @NonNull final String refId, boolean filter, @NonNull String from, String where) {
    start(progressBar, textView, adapter, refId, filter, from, where);
}
 
示例24
private void start(final ProgressBar progressBar, @NonNull final TextView textView, @NonNull FirebaseRecyclerAdapter adapter, @NonNull final String refId, final boolean filter, @NonNull String from, String equalto) {
    FirebaseDatabase mFirebaseInstance = FirebaseDatabase.getInstance();


    progressBar.setVisibility(View.VISIBLE);
    Query query;
    if (filter) {
        query = mFirebaseInstance.getReference(refId).orderByChild(from).equalTo(equalto);
    } else {
        query = mFirebaseInstance.getReference(refId);
    }
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            progressBar.setVisibility(View.GONE);
            if (!dataSnapshot.exists()) {

                if (filter) {
                    textView.setText(R.string.no_builds_found);
                } else {
                    switch (refId) {
                        case "RunningBuild":
                            textView.setText(R.string.no_running_builds);
                            break;
                        case "Builds":
                            textView.setText(R.string.no_builds_found);
                            break;
                        case "Rejected":
                            textView.setText(R.string.no_rejected);
                            break;
                    }
                }
                textView.setVisibility(View.VISIBLE);
            } else {
                textView.setVisibility(View.GONE);
            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError firebaseError) {
            progressBar.setVisibility(View.GONE);

        }
    });
    adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onChanged() {
            super.onChanged();
            progressBar.setVisibility(View.GONE);
        }
    });


}
 
示例25
void setMessageAdapter(FirebaseRecyclerAdapter<FriendlyMessage, ChatPresenterImpl.MessageViewHolder> adapter);