use of com.google.firebase.database.Query in project priend by TakoJ.
the class MyTopPostsFragment method getQuery.
@Override
public Query getQuery(DatabaseReference databaseReference) {
// [START my_top_posts_query]
// My top posts by number of stars
String myUserId = getUid();
Query myTopPostsQuery = databaseReference.child("user-posts").child(myUserId).orderByChild("starCount");
return myTopPostsQuery;
}
use of com.google.firebase.database.Query in project priend by TakoJ.
the class PostListFragment method onActivityCreated.
@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);
mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class, R.layout.item_post, PostViewHolder.class, postsQuery) {
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Post model, final int position) {
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.mipmap.ic_toggle_star_24);
} else {
viewHolder.starView.setImageResource(R.mipmap.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);
}
use of com.google.firebase.database.Query in project NPSmiles by bmcglynn1.
the class NewsFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View viewer = inflater.inflate(R.layout.activity_news_feed, container, false);
View popupLayout = inflater.inflate(R.layout.popup_layout_logged_in, null);
final ListView list = (ListView) viewer.findViewById(R.id.list);
final ArrayList<NewsMessage> newsList = new ArrayList<>();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Reference");
mAuth = FirebaseAuth.getInstance();
if (mAuth.getCurrentUser() != null) {
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
PopupMenu popup = new PopupMenu(parent.getContext(), view);
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
final TextView title = (TextView) view.findViewById(R.id.title);
final TextView message = (TextView) view.findViewById(R.id.information);
if (mAuth.getCurrentUser() != null) {
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch(item.getItemId()) {
case R.id.EditMenu:
// refresh view if needed
break;
case R.id.DeleteMenu:
// delete from firebase
// refresh view
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Reference");
Query titleQuery = myRef.child(title.getText().toString());
titleQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot titleSnapshot : dataSnapshot.getChildren()) {
dataSnapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
break;
}
return true;
}
});
}
}
});
}
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
newsList.clear();
for (DataSnapshot newsItem : dataSnapshot.getChildren()) {
NewsMessage newsMessage = new NewsMessage();
for (DataSnapshot item : newsItem.getChildren()) {
if (item.getKey().equals("title")) {
newsMessage.setTitle((String) item.getValue());
} else if (item.getKey().equals("message")) {
newsMessage.setMessage((String) item.getValue());
} else {
newsMessage.setDate((String) item.getValue());
}
}
newsList.add(newsMessage);
}
Collections.sort(newsList);
CustomAdapter adapter = new CustomAdapter(context, newsList);
list.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return viewer;
}
use of com.google.firebase.database.Query in project MadMax by deviz92.
the class User method addFriend.
public void addFriend(final String friendID) {
final DatabaseReference databaseReference = FirebaseUtils.getDatabaseReference();
final DatabaseReference usersRef = databaseReference.child("users");
final DatabaseReference groupsRef = databaseReference.child("groups");
final String currentUID = this.getID();
// getting friend data from db
DatabaseReference friendRef = usersRef.child(friendID);
User friend = new User(friendID, friendRef.child("username").toString(), friendRef.child("name").toString(), friendRef.child("surname").toString(), friendRef.child("email").toString(), friendRef.child("profileImage").toString());
//Add friendID to friend list of currentUID
// add friend to current user local HashMap
this.userFriends.put(friendID, friend);
usersRef.child(currentUID).child("friends").push();
usersRef.child(currentUID).child("friends").child(friendID).child("deleted").setValue(false);
//Add currentUID to friend list of friendID
usersRef.child(friendID).child("friends").push();
usersRef.child(friendID).child("friends").child(currentUID).child("deleted").setValue(false);
//Read groups currentUID belongs to
Query query = databaseReference.child("users").child(currentUID).child("groups");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final ArrayList<String> u1Groups = new ArrayList<String>();
for (DataSnapshot groupSnapshot : dataSnapshot.getChildren()) {
Log.d(TAG, groupSnapshot.getKey() + " : " + groupSnapshot.getValue());
if (groupSnapshot.getValue(Boolean.class))
u1Groups.add(groupSnapshot.getKey());
}
Query query = databaseReference.child("users").child(friendID).child("groups");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> sharedGroups = new ArrayList<String>();
for (DataSnapshot groupSnapshot : dataSnapshot.getChildren()) {
if (u1Groups.contains(groupSnapshot.getKey()) && groupSnapshot.getValue(Boolean.class))
sharedGroups.add(groupSnapshot.getKey());
}
final HashMap<String, Group> groups = new HashMap<>();
//ora in sharedGroups ci sono solo i gruppi di cui fanno parte entrambi gli utenti
for (String groupID : sharedGroups) {
// getting group data from db
DatabaseReference groupRef = groupsRef.child(groupID);
Group group = new Group(groupID, groupRef.child("name").toString(), groupRef.child("image").toString(), groupRef.child("description").toString(), Integer.parseInt(groupRef.child("numberMembers").toString()));
groups.put(friendID, group);
usersRef.child(currentUID).child("friends").child(friendID).child(groupID).setValue(true);
usersRef.child(friendID).child("friends").child(currentUID).child(groupID).setValue(true);
}
// add shared groups to local sharedGroupPerFriend HashMap
sharedGroupPerFriend.put(friendID, groups);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("addFriendFirebase", databaseError.getMessage());
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("addFriendFirebase", databaseError.getMessage());
}
});
}
Aggregations