Advertisement
alfnpnd1

HomeFragment

Jan 20th, 2020
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.92 KB | None | 0 0
  1. package com.example.newsdroid1;
  2.  
  3.  
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6.  
  7. import androidx.annotation.NonNull;
  8. import androidx.core.view.MenuItemCompat;
  9. import androidx.fragment.app.Fragment;
  10. import androidx.recyclerview.widget.LinearLayoutManager;
  11. import androidx.recyclerview.widget.RecyclerView;
  12.  
  13. import android.text.TextUtils;
  14. import android.util.Log;
  15. import android.view.LayoutInflater;
  16. import android.view.Menu;
  17. import android.view.MenuInflater;
  18. import android.view.MenuItem;
  19. import android.view.View;
  20. import android.view.ViewGroup;
  21. import android.widget.SearchView;
  22.  
  23. import com.example.newsdroid1.Adapters.AdapterPosts;
  24. import com.google.firebase.auth.FirebaseAuth;
  25. import com.google.firebase.auth.FirebaseUser;
  26. import com.google.firebase.database.DataSnapshot;
  27. import com.google.firebase.database.DatabaseError;
  28. import com.google.firebase.database.DatabaseReference;
  29. import com.google.firebase.database.FirebaseDatabase;
  30. import com.google.firebase.database.ValueEventListener;
  31.  
  32. import java.util.ArrayList;
  33. import java.util.List;
  34.  
  35. import static androidx.constraintlayout.widget.Constraints.TAG;
  36.  
  37.  
  38. /**
  39.  * A simple {@link Fragment} subclass.
  40.  */
  41. public class HomeFragment extends Fragment {
  42.  
  43.     FirebaseAuth firebaseAuth;
  44.  
  45.     RecyclerView recyclerView;
  46.     List<ModelPost> postList;
  47.     AdapterPosts adapterPosts;
  48.  
  49.     public HomeFragment() {
  50.         // Required empty public constructor
  51.     }
  52.  
  53.  
  54.     @Override
  55.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  56.                              Bundle savedInstanceState) {
  57.         // Inflate the layout for this fragment
  58.         View view = inflater.inflate(R.layout.fragment_home, container, false);
  59.  
  60.         firebaseAuth = FirebaseAuth.getInstance();
  61.  
  62.         recyclerView = view.findViewById(R.id.postsRecyclerView);
  63.         LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
  64.  
  65.         layoutManager.setStackFromEnd(true);
  66.         layoutManager.setReverseLayout(true);
  67.  
  68.         recyclerView.setLayoutManager(layoutManager);
  69.  
  70.         postList = new ArrayList<>();
  71.  
  72.         loadPosts();
  73.  
  74.         return view;
  75.     }
  76.  
  77.     private void loadPosts() {
  78.         DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Posts");
  79.  
  80.         ref.addValueEventListener(new ValueEventListener() {
  81.             @Override
  82.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  83.                 postList.clear();
  84.                 for(DataSnapshot ds: dataSnapshot.getChildren()){
  85.                     ModelPost model = ds.getValue(ModelPost.class);
  86.  
  87.                     postList.add(model);
  88.  
  89.                     adapterPosts = new AdapterPosts(getActivity(), postList);
  90.  
  91.                     recyclerView.setAdapter(adapterPosts);
  92.                 }
  93.             }
  94.  
  95.             @Override
  96.             public void onCancelled(@NonNull DatabaseError databaseError) {
  97.             }
  98.         });
  99.     }
  100.  
  101.     private void searchPosts(final String searchQuery){
  102.         DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Posts");
  103.  
  104.         ref.addValueEventListener(new ValueEventListener() {
  105.             @Override
  106.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  107.                 postList.clear();
  108.                 for(DataSnapshot ds: dataSnapshot.getChildren()){
  109.                     ModelPost model = ds.getValue(ModelPost.class);
  110.  
  111.                     if(model.getpTitle().toLowerCase().contains(searchQuery.toLowerCase())){
  112.                         postList.add(model);
  113.                     }
  114.  
  115.  
  116.  
  117.                     adapterPosts = new AdapterPosts(getActivity(), postList);
  118.  
  119.                     recyclerView.setAdapter(adapterPosts);
  120.                 }
  121.             }
  122.  
  123.             @Override
  124.             public void onCancelled(@NonNull DatabaseError databaseError) {
  125.             }
  126.         });
  127.  
  128.     }
  129.  
  130.     private void checkUserStatus(){
  131.         FirebaseUser user = firebaseAuth.getCurrentUser();
  132.         if(user != null){
  133.  
  134.         }
  135.         else{
  136.             startActivity(new Intent(getActivity(), MainActivity.class));
  137.             getActivity().finish();
  138.         }
  139.     }
  140.  
  141.     public void onCreate( Bundle savedInstanceState){
  142.         setHasOptionsMenu(true);
  143.         super.onCreate(savedInstanceState);
  144.     }
  145.  
  146.     public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){
  147.         inflater.inflate(R.menu.menu_main, menu);
  148.         menu.findItem(R.id.action_add_post).setVisible(false);
  149.         menu.findItem(R.id.action_add_search).setVisible(false);
  150.         menu.findItem(R.id.action_logout).setVisible(false);
  151.  
  152.         MenuItem item = menu.findItem(R.id.action_add_search);
  153.         final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
  154.  
  155.         searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
  156.             @Override
  157.             public boolean onQueryTextSubmit(String s) {
  158.                 if(!TextUtils.isEmpty(s)){
  159.                     searchPosts(s);
  160.  
  161.                 }
  162.                 else{
  163.                     loadPosts();
  164.                 }
  165.                 return false;
  166.             }
  167.  
  168.             @Override
  169.             public boolean onQueryTextChange(String s) {
  170.                 if(!TextUtils.isEmpty(s)){
  171.                     searchPosts(s);
  172.  
  173.                 }
  174.                 else{
  175.                     loadPosts();
  176.                 }
  177.                 return false;
  178.             }
  179.         });
  180.         super.onCreateOptionsMenu(menu, inflater);
  181.     }
  182.  
  183.     public boolean onOptionsItemSelected(MenuItem item){
  184.         int id = item.getItemId();
  185.         if( id == R.id.action_logout){
  186.             firebaseAuth.signOut();
  187.             checkUserStatus();
  188.         }
  189.         if( id == R.id.action_add_post){
  190.             startActivity(new Intent(getActivity(),AddPostActivity.class));
  191.         }
  192.         return super.onOptionsItemSelected(item);
  193.     }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement