Search in sources :

Example 6 with Query

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;
}
Also used : Query(com.google.firebase.database.Query)

Example 7 with Query

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);
}
Also used : PostViewHolder(com.example.management.viewholder.PostViewHolder) Query(com.google.firebase.database.Query) DatabaseReference(com.google.firebase.database.DatabaseReference) Post(com.example.management.models.Post) Intent(android.content.Intent) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) RecyclerView(android.support.v7.widget.RecyclerView) View(android.view.View)

Example 8 with Query

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;
}
Also used : FirebaseDatabase(com.google.firebase.database.FirebaseDatabase) Query(com.google.firebase.database.Query) DatabaseReference(com.google.firebase.database.DatabaseReference) ArrayList(java.util.ArrayList) MenuItem(android.view.MenuItem) DataSnapshot(com.google.firebase.database.DataSnapshot) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) ListView(android.widget.ListView) DatabaseError(com.google.firebase.database.DatabaseError) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ValueEventListener(com.google.firebase.database.ValueEventListener) PopupMenu(android.widget.PopupMenu)

Example 9 with Query

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());
        }
    });
}
Also used : Query(com.google.firebase.database.Query) DatabaseReference(com.google.firebase.database.DatabaseReference) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) DataSnapshot(com.google.firebase.database.DataSnapshot) DatabaseError(com.google.firebase.database.DatabaseError) ValueEventListener(com.google.firebase.database.ValueEventListener)

Aggregations

Query (com.google.firebase.database.Query)9 DatabaseReference (com.google.firebase.database.DatabaseReference)4 RecyclerView (android.support.v7.widget.RecyclerView)3 View (android.view.View)3 Intent (android.content.Intent)2 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)2 DataSnapshot (com.google.firebase.database.DataSnapshot)2 DatabaseError (com.google.firebase.database.DatabaseError)2 ValueEventListener (com.google.firebase.database.ValueEventListener)2 ArrayList (java.util.ArrayList)2 MenuItem (android.view.MenuItem)1 AdapterView (android.widget.AdapterView)1 ListView (android.widget.ListView)1 PopupMenu (android.widget.PopupMenu)1 TextView (android.widget.TextView)1 Post (com.example.management.models.Post)1 PostViewHolder (com.example.management.viewholder.PostViewHolder)1 FirebaseUser (com.google.firebase.auth.FirebaseUser)1 FirebaseDatabase (com.google.firebase.database.FirebaseDatabase)1 Post (com.google.firebase.quickstart.database.models.Post)1