Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

package com.example.SwiftCafe.

Fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.interfaces.ItemClickListener;
import com.denzcoskun.imageslider.models.SlideModel;
import com.example.SwiftCafe.Adapter.MenuAdapter;
import com.example.SwiftCafe.Model.MenuItem;
import com.example.SwiftCafe.R;
import com.example.SwiftCafe.databinding.FragmentHomeBinding;
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.ValueEventListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class HomeFragment extends Fragment {


private FragmentHomeBinding binding;
private FirebaseDatabase database;
private List<MenuItem> menuItems;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
binding = FragmentHomeBinding.inflate(inflater, container, false);
binding.viewAllMenu.setOnClickListener(view -> {
MenuBottomSheetFragment bottomSheetDialog = new
MenuBottomSheetFragment();
bottomSheetDialog.show(getParentFragmentManager(), "Test");
});

retrieveAndDisplayPopularItems();
return binding.getRoot();
}

private void retrieveAndDisplayPopularItems() {


database = FirebaseDatabase.getInstance();
DatabaseReference foodRef = database.getReference().child("menu");
menuItems = new ArrayList<>();
foodRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot foodSnapshot : snapshot.getChildren()) {
MenuItem menuItem = foodSnapshot.getValue(MenuItem.class);
if (menuItem != null) {
menuItems.add(menuItem);
}
}
randomPopularItems();
}

@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}

private void randomPopularItems() {


List<Integer> index = new ArrayList<>();
for (int i = 0; i < menuItems.size(); i++) {
index.add(i);
}
Collections.shuffle(index);
int numItemToShow = 6;
List<MenuItem> subsetMenuItems = new ArrayList<>();
for (int i = 0; i < numItemToShow; i++) {
subsetMenuItems.add(menuItems.get(index.get(i)));
}
setPopularItemsAdapter(subsetMenuItems);
}

private void setPopularItemsAdapter(List<MenuItem> subsetMenuItems) {


MenuAdapter adapter = new MenuAdapter(subsetMenuItems, requireContext());
binding.PopulerRecyclerView.setLayoutManager(new
LinearLayoutManager(requireContext()));
binding.PopulerRecyclerView.setAdapter(adapter);
}

@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ArrayList<SlideModel> imageList = new ArrayList<>();
imageList.add(new SlideModel(R.drawable.banner1, ScaleTypes.FIT));
imageList.add(new SlideModel(R.drawable.banner2, ScaleTypes.FIT));
imageList.add(new SlideModel(R.drawable.banner3, ScaleTypes.FIT));
binding.imageSlider.setImageList(imageList);
binding.imageSlider.setImageList(imageList, ScaleTypes.FIT);
binding.imageSlider.setItemClickListener(new ItemClickListener() {
@Override
public void onItemSelected(int position) {
SlideModel itemPosition = imageList.get(position);
String itemMessage = "Selected Image " + position;
Toast.makeText(requireContext(), itemMessage,
Toast.LENGTH_SHORT).show();
}

@Override
public void onDoubleClick(int position) {
// TODO: Implement double click action
}
});
}
}

You might also like