com.firebase.ui.database.FirebaseRecyclerOptions Java Examples

The following examples show how to use com.firebase.ui.database.FirebaseRecyclerOptions. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ChatChannel.java    From Shipr-Community-Android with GNU General Public License v3.0 6 votes vote down vote up
private void setUpAdapter() {
    // Init Firebase Recycler options
    FirebaseRecyclerOptions<DeveloperMessage> options =
            new FirebaseRecyclerOptions.Builder<DeveloperMessage>()
                    .setQuery(mMessagesDatabaseReference, DeveloperMessage.class)
                    .setLifecycleOwner(this)
                    .build();
    // Init adapter
    mMessageAdapter = new MessageAdapter(getContext(), options) {
        @Override
        public void onLoaded() {
            mProgressBarCheck();
        }
    };

    // Scroll to bottom on new messages
    mMessageAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            mMessageRecycler.smoothScrollToPosition(mMessageAdapter.getItemCount());
        }
    });

    // Set the adapter
    mMessageRecycler.setAdapter(mMessageAdapter);
}
 
Example #2
Source File: PostsFragment.java    From friendlypix-android with Apache License 2.0 6 votes vote down vote up
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);
        }
    };
}
 
Example #3
Source File: MessageAdapter.java    From Shipr-Community-Android with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Initialize a {@link RecyclerView.Adapter} that listens to a Firebase query. See
 * {@link FirebaseRecyclerOptions} for configuration options.
 *
 * @param options
 */
public MessageAdapter(Context mContext, @NonNull FirebaseRecyclerOptions<DeveloperMessage> options) {
    super(options);
    this.mContext = mContext;

    mUser = FirebaseAuth.getInstance().getCurrentUser();
}
 
Example #4
Source File: DoorbellEntryAdapter.java    From doorbell with Apache License 2.0 5 votes vote down vote up
public DoorbellEntryAdapter(Context context, DatabaseReference ref) {
    super(new FirebaseRecyclerOptions.Builder<DoorbellEntry>()
            .setQuery(ref, DoorbellEntry.class)
            .build());

    mApplicationContext = context.getApplicationContext();
    mFirebaseStorage = FirebaseStorage.getInstance();
}
 
Example #5
Source File: RealtimeDbChatIndexActivity.java    From FirebaseUI-Android with Apache License 2.0 5 votes vote down vote up
@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);
        }
    };
}
 
Example #6
Source File: RealtimeDbChatActivity.java    From FirebaseUI-Android with Apache License 2.0 5 votes vote down vote up
@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);
        }
    };
}
 
Example #7
Source File: ChatFragment.java    From ChatApp with Apache License 2.0 4 votes vote down vote up
@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;
}
 
Example #8
Source File: UsersActivity.java    From ChatApp with Apache License 2.0 4 votes vote down vote up
@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);
}
 
Example #9
Source File: PostListFragment.java    From quickstart-android with Apache License 2.0 4 votes vote down vote up
@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);
}
 
Example #10
Source File: FragmentListDevs.java    From TwrpBuilder with GNU General Public License v3.0 4 votes vote down vote up
@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;
}
 
Example #11
Source File: FragmentStatusCommon.java    From TwrpBuilder with GNU General Public License v3.0 4 votes vote down vote up
@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;

}