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);