From 9225723bb2769cc23c129b8e65c0d2fc2693ce48 Mon Sep 17 00:00:00 2001 From: Nezumi <123229563+Nez27@users.noreply.github.com> Date: Wed, 15 Feb 2023 23:04:31 +0700 Subject: [PATCH] Fix UI Layout --- app/src/main/AndroidManifest.xml | 1 + .../foodify/Fragment/HomeFragment.java | 2 +- .../foodify/Fragment/SearchFragment.java | 37 ++----- .../foodify/Model/Food/FoodSearchAdapter.java | 81 +++++++++++++++ app/src/main/res/layout/fragment_search.xml | 41 ++++---- app/src/main/res/layout/list_foods.xml | 32 +++--- app/src/main/res/layout/list_foods_search.xml | 98 +++++++++++++++++++ app/src/main/res/layout/menu.xml | 2 +- 8 files changed, 227 insertions(+), 67 deletions(-) create mode 100644 app/src/main/java/com/capstone/foodify/Model/Food/FoodSearchAdapter.java create mode 100644 app/src/main/res/layout/list_foods_search.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cbadb51..4edcba0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" + android:enableOnBackInvokedCallback="true" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.Foodify" diff --git a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java index 6a386ec..0bade9e 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java @@ -87,7 +87,7 @@ public class HomeFragment extends Fragment { List listMenu = new ArrayList<>(); listMenu.add(new Menu("Recommend Food", listFood)); - listMenu.add(new Menu("Drinks", drinkFood)); + listMenu.add(new Menu("Popular Food", drinkFood)); return listMenu; } diff --git a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java index 5be28cf..8db61e4 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java @@ -4,30 +4,28 @@ import static com.capstone.foodify.Fragment.HomeFragment.listFood; import android.app.Activity; import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.FoodAdapter; +import com.capstone.foodify.Model.Food.FoodSearchAdapter; import com.capstone.foodify.R; import com.paulrybitskyi.persistentsearchview.PersistentSearchView; import com.paulrybitskyi.persistentsearchview.listeners.OnSearchConfirmedListener; import com.paulrybitskyi.persistentsearchview.listeners.OnSearchQueryChangeListener; -import com.paulrybitskyi.persistentsearchview.utils.SuggestionCreationUtil; import com.paulrybitskyi.persistentsearchview.utils.VoiceRecognitionDelegate; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import retrofit2.Call; import retrofit2.Callback; @@ -36,7 +34,7 @@ import retrofit2.Response; public class SearchFragment extends Fragment { private RecyclerView recycler_view_search; - private FoodAdapter foodAdapter; + private FoodSearchAdapter foodAdapter; private PersistentSearchView persistentSearchView; private static List listFoodSearch = new ArrayList<>(); @@ -50,7 +48,7 @@ public class SearchFragment extends Fragment { recycler_view_search = view.findViewById(R.id.recycler_view_search); persistentSearchView = view.findViewById(R.id.search_view); - foodAdapter = new FoodAdapter(getContext()); + foodAdapter = new FoodSearchAdapter(getContext()); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 3); recycler_view_search.setLayoutManager(gridLayoutManager); @@ -60,12 +58,6 @@ public class SearchFragment extends Fragment { persistentSearchView.setLeftButtonDrawable(R.drawable.ic_search); - // Setting a delegate for the voice recognition input - persistentSearchView.setVoiceRecognitionDelegate(new VoiceRecognitionDelegate(this)); - - persistentSearchView.setProgressBarEnabled(true); - persistentSearchView.setSuggestionsDisabled(false); - persistentSearchView.setOnSearchConfirmedListener(new OnSearchConfirmedListener() { @Override @@ -111,22 +103,7 @@ public class SearchFragment extends Fragment { } }); - // Disabling the suggestions since they are unused in - // the simple implementation - persistentSearchView.setSuggestionsDisabled(false); - return view; } - public static void hideKeyboard(Activity activity) { - InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); - //Find the currently focused view, so we can grab the correct window token from it. - View view = activity.getCurrentFocus(); - //If no view currently has focus, create a new one, just so we can grab a window token from it - if (view == null) { - view = new View(activity); - } - imm.hideSoftInputFromWindow(view.getWindowToken(), 0); - } - } \ No newline at end of file diff --git a/app/src/main/java/com/capstone/foodify/Model/Food/FoodSearchAdapter.java b/app/src/main/java/com/capstone/foodify/Model/Food/FoodSearchAdapter.java new file mode 100644 index 0000000..3045aee --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Food/FoodSearchAdapter.java @@ -0,0 +1,81 @@ +package com.capstone.foodify.Model.Food; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.capstone.foodify.R; +import com.squareup.picasso.Picasso; + +import java.util.List; + +public class FoodSearchAdapter extends RecyclerView.Adapter{ + + private List listFood; + private Context context; + + public FoodSearchAdapter(Context context){ + this.context = context; + } + + public FoodSearchAdapter() {} + public void setData(List list) { + this.listFood = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_foods_search, parent, false); + return new FoodViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull FoodViewHolder holder, int position) { + Food food = listFood.get(position); + if(food == null){ + return; + } + + String foodName = food.getName(); + if(foodName.length() >= 19){ + StringBuilder stringBuilder = new StringBuilder(food.getName()); + stringBuilder.replace(19, food.getName().length(), "..." ); + holder.name.setText(stringBuilder); + } else { + holder.name.setText(foodName); + } + Picasso.get().load(food.getImg()).into(holder.image); + holder.price.setText(food.getPrice()); + } + + @Override + public int getItemCount() { + if(listFood != null) { + return listFood.size(); + } + return 0; + } + + public class FoodViewHolder extends RecyclerView.ViewHolder{ + + private ImageView image; + private TextView name, price; + + public FoodViewHolder(@NonNull View itemView) { + super(itemView); + + image = itemView.findViewById(R.id.image_view); + name = itemView.findViewById(R.id.title); + price = itemView.findViewById(R.id.price); + + } + } +} diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index ab0109d..644c018 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -1,5 +1,5 @@ - - + android:layout_height="wrap_content"> - + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/list_foods.xml b/app/src/main/res/layout/list_foods.xml index 4bde8c5..ed7d9eb 100644 --- a/app/src/main/res/layout/list_foods.xml +++ b/app/src/main/res/layout/list_foods.xml @@ -1,16 +1,14 @@ @@ -20,8 +18,8 @@ + android:src="@drawable/basket_icon" /> diff --git a/app/src/main/res/layout/list_foods_search.xml b/app/src/main/res/layout/list_foods_search.xml new file mode 100644 index 0000000..5c84701 --- /dev/null +++ b/app/src/main/res/layout/list_foods_search.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/menu.xml b/app/src/main/res/layout/menu.xml index e5d8ed9..fe35366 100644 --- a/app/src/main/res/layout/menu.xml +++ b/app/src/main/res/layout/menu.xml @@ -21,7 +21,7 @@