Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
6002CEM_8918189/app/src/main/java/com/example/booksharing21/HomeFragment.java
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
263 lines (190 sloc)
7.42 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.booksharing21; | |
import android.app.FragmentManager; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.net.Uri; | |
import android.nfc.Tag; | |
import android.os.Bundle; | |
import androidx.annotation.NonNull; | |
import androidx.fragment.app.Fragment; | |
import androidx.recyclerview.widget.LinearLayoutManager; | |
import androidx.recyclerview.widget.RecyclerView; | |
import androidx.viewpager2.adapter.FragmentViewHolder; | |
import android.os.Handler; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.Button; | |
import android.widget.ImageView; | |
import android.widget.TextView; | |
import android.widget.Toast; | |
import com.bumptech.glide.Glide; | |
import com.bumptech.glide.load.model.Model; | |
import com.firebase.ui.database.FirebaseRecyclerAdapter; | |
import com.firebase.ui.database.FirebaseRecyclerOptions; | |
import com.google.android.gms.tasks.OnCompleteListener; | |
import com.google.android.gms.tasks.Task; | |
import com.google.firebase.auth.FirebaseAuth; | |
import com.google.firebase.database.ChildEventListener; | |
import com.google.firebase.database.DataSnapshot; | |
import com.google.firebase.database.DatabaseError; | |
import com.google.firebase.database.DatabaseReference; | |
import com.google.firebase.database.FirebaseDatabase; | |
import com.google.firebase.database.Query; | |
import com.google.firebase.database.ValueEventListener; | |
import com.google.firebase.firestore.FirebaseFirestore; | |
import com.google.firebase.firestore.ListenerRegistration; | |
import com.google.firebase.firestore.QueryDocumentSnapshot; | |
import com.google.firebase.firestore.QuerySnapshot; | |
import com.google.firebase.storage.StorageReference; | |
import com.squareup.picasso.Picasso; | |
import java.util.ArrayList; | |
import java.util.EventListener; | |
import java.util.List; | |
import static android.content.ContentValues.TAG; | |
import static com.example.booksharing21.R.id.homeFragment; | |
import static com.example.booksharing21.R.id.stop; | |
/** | |
* A simple {@link Fragment} subclass. | |
* Use the {@link HomeFragment#newInstance} factory method to | |
* create an instance of this fragment. | |
*/ | |
public class HomeFragment extends Fragment { | |
// TODO: Rename parameter arguments, choose names that match | |
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER | |
private static final String ARG_PARAM1 = "param1"; | |
private static final String ARG_PARAM2 = "param2"; | |
// TODO: Rename and change types of parameters | |
private String mParam1; | |
private String mParam2; | |
private Object Tag; | |
public HomeFragment() { | |
// Required empty public constructor | |
} | |
/** | |
* Use this factory method to create a new instance of | |
* this fragment using the provided parameters. | |
* | |
* @param param1 Parameter 1. | |
* @param param2 Parameter 2. | |
* @return A new instance of fragment HomeFragment. | |
*/ | |
// TODO: Rename and change types and number of parameters | |
public static HomeFragment fragment; | |
public static HomeFragment newInstance(String param1, String param2) { | |
if(fragment == null) | |
{ | |
fragment = new HomeFragment(); | |
} | |
Bundle args = new Bundle(); | |
args.putString(ARG_PARAM1, param1); | |
args.putString(ARG_PARAM2, param2); | |
fragment.setArguments(args); | |
return fragment; | |
} | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
if (getArguments() != null) { | |
mParam1 = getArguments().getString(ARG_PARAM1); | |
mParam2 = getArguments().getString(ARG_PARAM2); | |
} | |
} | |
public ArrayList<info> infoList ; | |
public HelperAdapter helperAdapter; | |
public RecyclerView inforec; | |
public FirebaseFirestore db; | |
public DatabaseReference mDatabase; | |
public String userid = FirebaseAuth.getInstance().getCurrentUser().getUid(); | |
public Context mContext; | |
// https://www.youtube.com/watch?v=BrDX6VTgTkg&t=617s (Retrieve data to the recycler view) | |
@Override | |
public View onCreateView(LayoutInflater inflater, ViewGroup container, | |
Bundle savedInstanceState) { | |
// Inflate the layout for this fragment | |
View view = inflater.inflate(R.layout.fragment_home, container, false); | |
// Database Reference | |
db = FirebaseFirestore.getInstance(); | |
mDatabase = FirebaseDatabase.getInstance().getReference("posts"); | |
// Layout | |
inforec = view.findViewById(R.id.re_view); | |
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); | |
inforec.setLayoutManager(layoutManager); | |
inforec.setHasFixedSize(true); | |
layoutManager.setReverseLayout(true); | |
layoutManager.setStackFromEnd(true); | |
// Array list | |
infoList = new ArrayList<>(); | |
// Clear infoList | |
ClearAll(); | |
onStart(); | |
onStop(); | |
return view; | |
} | |
private void ClearAll() { | |
if (infoList!=null){ | |
infoList.clear(); | |
if (helperAdapter != null){ | |
helperAdapter.notifyDataSetChanged(); | |
} | |
} | |
infoList = new ArrayList<>(); | |
} | |
ValueEventListener listener; | |
// getting book info from db | |
private void GetDataFromFirebase() { | |
listener = new ValueEventListener() { | |
@Override | |
public void onDataChange(@NonNull DataSnapshot snapshot) { | |
ClearAll(); | |
for (DataSnapshot dataSnapshot : snapshot.getChildren()) { | |
info info = new info(); | |
info.setPostid(dataSnapshot.child("postid").getValue().toString()); | |
info.setUrl(dataSnapshot.child("url").getValue().toString()); | |
info.setBookname(dataSnapshot.child("book name").getValue().toString()); | |
info.setAuthor(dataSnapshot.child("author").getValue().toString()); | |
info.setIsbn(dataSnapshot.child("isbn").getValue().toString()); | |
infoList.add(info); | |
} | |
helperAdapter = new HelperAdapter(getContext(), infoList); | |
inforec.setAdapter(helperAdapter); | |
helperAdapter.notifyDataSetChanged(); | |
} | |
@Override | |
public void onCancelled(@NonNull DatabaseError error) { | |
Toast.makeText(getActivity(), "No books published yet", Toast.LENGTH_LONG).show(); | |
} | |
}; | |
mDatabase.addListenerForSingleValueEvent(listener); | |
} | |
public void database(){ | |
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected"); | |
connectedRef.addValueEventListener(new ValueEventListener() { | |
@Override | |
public void onDataChange(DataSnapshot snapshot) { | |
boolean connected = snapshot.getValue(Boolean.class); | |
if (connected) { | |
System.out.println("connected"); | |
} else { | |
System.out.println("not connected"); | |
} | |
} | |
@Override | |
public void onCancelled(DatabaseError error) { | |
System.err.println("Listener was cancelled"); | |
} | |
}); | |
} | |
@Override | |
public void onStart() | |
{ | |
super.onStart(); | |
database(); | |
GetDataFromFirebase(); //onStart Called | |
} | |
public void onStop() { | |
super.onStop(); | |
mDatabase.removeEventListener(listener); | |
} | |
} | |