From c51300e6ef26a92ca8d90b39782c20a5a461016d Mon Sep 17 00:00:00 2001 From: Nezumi <123229563+Nez27@users.noreply.github.com> Date: Mon, 6 Mar 2023 16:23:47 +0700 Subject: [PATCH] Add address manager screen --- app/src/main/AndroidManifest.xml | 3 + .../Activity/AddressManagerActivity.java | 53 +++++++++ .../foodify/Fragment/ProfileFragment.java | 12 +- .../foodify/Model/Address/Address.java | 47 ++++++++ .../foodify/Model/Address/AddressAdapter.java | 74 +++++++++++++ .../res/layout/activity_address_manager.xml | 58 ++++++++++ app/src/main/res/layout/item_address.xml | 103 ++++++++++++++++++ 7 files changed, 349 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Address/Address.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Address/AddressAdapter.java create mode 100644 app/src/main/res/layout/activity_address_manager.xml create mode 100644 app/src/main/res/layout/item_address.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3b00419..ddd6b0c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,9 @@ android:theme="@style/Theme.Foodify" tools:replace="android:theme" tools:targetApi="31"> + diff --git a/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java b/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java new file mode 100644 index 0000000..c4ca51a --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java @@ -0,0 +1,53 @@ +package com.capstone.foodify.Activity; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.os.Bundle; +import android.widget.Button; + +import com.capstone.foodify.Model.Address.Address; +import com.capstone.foodify.Model.Address.AddressAdapter; +import com.capstone.foodify.R; + +import java.util.ArrayList; +import java.util.List; + +public class AddressManagerActivity extends AppCompatActivity { + + private RecyclerView recycler_view_address; + private AddressAdapter adapter; + private Button add_address_button; + + private List
listAddress = new ArrayList<>(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_address_manager); + + //Init Component + recycler_view_address = findViewById(R.id.recycler_view_address); + add_address_button = findViewById(R.id.add_address_button); + + //Set layout recyclerview + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); + recycler_view_address.setLayoutManager(linearLayoutManager); + + adapter = new AddressAdapter(); + + getAddressList(); + + } + + private void getAddressList(){ + + for(int i = 1; i <= 10; i++){ + listAddress.add(new Address(i, "Hẻm 215, đường Phạm Như Xương", "phường Hoà Khánh Nam", "Liên Chiểu")); + } + + adapter.setData(listAddress); + recycler_view_address.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java index e107638..72089bf 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java @@ -11,6 +11,7 @@ import android.widget.LinearLayout; import androidx.fragment.app.Fragment; import com.capstone.foodify.Activity.AccountAndProfileActivity; +import com.capstone.foodify.Activity.AddressManagerActivity; import com.capstone.foodify.Activity.SignUpActivity; import com.capstone.foodify.R; @@ -18,7 +19,7 @@ public class ProfileFragment extends Fragment { Button btnSignUp; - LinearLayout account_and_profile; + LinearLayout account_and_profile, manage_address; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -26,6 +27,8 @@ public class ProfileFragment extends Fragment { View rootView = inflater.inflate(R.layout.fragment_profile, container, false); btnSignUp = (Button) rootView.findViewById(R.id.sign_up_button); account_and_profile = (LinearLayout) rootView.findViewById(R.id.account_and_profile); + manage_address = (LinearLayout) rootView.findViewById(R.id.manage_address); + btnSignUp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -39,6 +42,13 @@ public class ProfileFragment extends Fragment { startActivity(new Intent(getActivity(), AccountAndProfileActivity.class)); } }); + + manage_address.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(new Intent(getActivity(), AddressManagerActivity.class)); + } + }); return rootView; } } \ No newline at end of file diff --git a/app/src/main/java/com/capstone/foodify/Model/Address/Address.java b/app/src/main/java/com/capstone/foodify/Model/Address/Address.java new file mode 100644 index 0000000..9b5c658 --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Address/Address.java @@ -0,0 +1,47 @@ +package com.capstone.foodify.Model.Address; + +public class Address { + private int id; + private String address; + private String ward; + private String district; + + public Address(int id, String address, String ward, String district) { + this.id = id; + this.address = address; + this.ward = ward; + this.district = district; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getWard() { + return ward; + } + + public void setWard(String ward) { + this.ward = ward; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } +} diff --git a/app/src/main/java/com/capstone/foodify/Model/Address/AddressAdapter.java b/app/src/main/java/com/capstone/foodify/Model/Address/AddressAdapter.java new file mode 100644 index 0000000..6a57232 --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Address/AddressAdapter.java @@ -0,0 +1,74 @@ +package com.capstone.foodify.Model.Address; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.capstone.foodify.Model.Food.FoodAdapter; +import com.capstone.foodify.R; + +import java.util.List; + +public class AddressAdapter extends RecyclerView.Adapter{ + + private List
listAddress; + + public AddressAdapter() { + } + + public void setData(List
listAddress){ + this.listAddress = listAddress; + } + + @NonNull + @Override + public AddressViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_address, parent, false); + return new AddressViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull AddressViewHolder holder, int position) { + Address address = listAddress.get(position); + + if(address == null) + return; + + //Create a full address string + String fullAddress = address.getAddress() + ", " + address.getWard() + ", " + address.getDistrict(); + + //Bind data to component + holder.text_view_address.setText(fullAddress); + + + } + + @Override + public int getItemCount() { + if(listAddress != null) + return listAddress.size(); + return 0; + } + + public class AddressViewHolder extends RecyclerView.ViewHolder{ + + private TextView text_view_address, default_text_view, blank_text_view; + private Button edit_btn, delete_btn; + + public AddressViewHolder(@NonNull View itemView) { + super(itemView); + + text_view_address = itemView.findViewById(R.id.text_view_address); + default_text_view = itemView.findViewById(R.id.default_text_view); + blank_text_view = itemView.findViewById(R.id.blank_text_view); + + edit_btn = itemView.findViewById(R.id.edit_button); + delete_btn = itemView.findViewById(R.id.delete_button); + } + } +} diff --git a/app/src/main/res/layout/activity_address_manager.xml b/app/src/main/res/layout/activity_address_manager.xml new file mode 100644 index 0000000..d486de9 --- /dev/null +++ b/app/src/main/res/layout/activity_address_manager.xml @@ -0,0 +1,58 @@ + + + + + + + + + +