mirror of
https://github.com/Nezumi-2711/PRM392.git
synced 2026-09-22 05:41:45 +00:00
Update Firebase ServerApp
This commit is contained in:
@@ -307,21 +307,6 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||
recyler_menu.scheduleLayoutAnimation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.home, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (item.getItemId() == R.id.refresh)
|
||||
loadMenu();
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
int id = item.getItemId();
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/refresh"
|
||||
android:icon="@drawable/ic_baseline_refresh_24"
|
||||
android:iconTint="@color/white"
|
||||
android:title="Refresh"
|
||||
/>
|
||||
</menu>
|
||||
@@ -46,22 +46,25 @@ dependencies {
|
||||
|
||||
|
||||
//Add library
|
||||
implementation 'com.google.firebase:firebase-core:11.8.0'
|
||||
implementation 'com.google.firebase:firebase-database:11.8.0'
|
||||
implementation 'com.firebaseui:firebase-ui-database:1.2.0'
|
||||
|
||||
|
||||
implementation 'com.squareup.picasso:picasso:2.5.2'
|
||||
implementation 'com.google.firebase:firebase-auth:11.8.0'
|
||||
implementation 'com.google.firebase:firebase-storage:11.8.0'
|
||||
implementation 'com.github.jd-alexander:android-flat-button:v1.1'
|
||||
implementation 'com.rengwuxian.materialedittext:library:2.1.4'
|
||||
implementation 'com.jaredrummler:material-spinner:1.1.0'
|
||||
implementation 'com.google.android.gms:play-services-maps:11.8.0'
|
||||
implementation 'com.google.android.gms:play-services:11.8.0'
|
||||
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
|
||||
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
|
||||
|
||||
//Firebase
|
||||
implementation 'com.google.firebase:firebase-core:11.8.0'
|
||||
implementation 'com.google.firebase:firebase-database:11.8.0'
|
||||
implementation 'com.google.firebase:firebase-auth:11.8.0'
|
||||
implementation 'com.google.firebase:firebase-storage:11.8.0'
|
||||
implementation 'com.google.firebase:firebase-messaging:11.8.0'
|
||||
implementation 'com.firebaseui:firebase-ui-database:3.2.0'
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.FoodifyServer"
|
||||
tools:targetApi="31">
|
||||
<activity
|
||||
android:name=".BannerActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".OrderDetail"
|
||||
android:exported="false" />
|
||||
@@ -71,7 +74,6 @@
|
||||
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<service
|
||||
android:name=".Service.MyFirebaseMessaging"
|
||||
android:exported="false">
|
||||
@@ -79,7 +81,6 @@
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,107 @@
|
||||
package com.waterbase.foodifyServer;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.firebase.ui.database.FirebaseRecyclerAdapter;
|
||||
import com.firebase.ui.database.FirebaseRecyclerOptions;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.FirebaseDatabase;
|
||||
import com.google.firebase.storage.FirebaseStorage;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
import com.rengwuxian.materialedittext.MaterialEditText;
|
||||
import com.squareup.picasso.Picasso;
|
||||
import com.waterbase.foodifyServer.Model.Banner;
|
||||
import com.waterbase.foodifyServer.ViewHolder.BannerViewHolder;
|
||||
|
||||
import info.hoang8f.widget.FButton;
|
||||
|
||||
public class BannerActivity extends AppCompatActivity {
|
||||
|
||||
RecyclerView recyclerView;
|
||||
RecyclerView.LayoutManager layoutManager;
|
||||
|
||||
RelativeLayout rootLayout;
|
||||
|
||||
FloatingActionButton fab;
|
||||
|
||||
//Firebase
|
||||
FirebaseDatabase db;
|
||||
DatabaseReference banners;
|
||||
FirebaseStorage storage;
|
||||
StorageReference storageReference;
|
||||
|
||||
FirebaseRecyclerAdapter<Banner, BannerViewHolder> adapter;
|
||||
|
||||
//Add new Banner
|
||||
MaterialEditText edtName, edtFoodId;
|
||||
FButton btnUpload, btnSelect;
|
||||
|
||||
Banner newBanner;
|
||||
Uri filePath;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_banner);
|
||||
|
||||
//Init firebase
|
||||
db = FirebaseDatabase.getInstance();
|
||||
banners = db.getReference("Banner");
|
||||
storage = FirebaseStorage.getInstance();
|
||||
storageReference = storage.getReference();
|
||||
|
||||
recyclerView = findViewById(R.id.recycler_banner);
|
||||
recyclerView.setHasFixedSize(true);
|
||||
layoutManager = new LinearLayoutManager(this);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
|
||||
rootLayout = findViewById(R.id.rootLayout);
|
||||
|
||||
fab = findViewById(R.id.fab);
|
||||
fab.setOnClickListener((view) -> { showAddBanner(); });
|
||||
|
||||
loadListBanner();
|
||||
}
|
||||
|
||||
private void loadListBanner() {
|
||||
FirebaseRecyclerOptions<Banner> allBanner = new FirebaseRecyclerOptions.Builder<Banner>()
|
||||
.setQuery(banners, Banner.class)
|
||||
.build();
|
||||
|
||||
adapter = new FirebaseRecyclerAdapter<Banner, BannerViewHolder>(allBanner) {
|
||||
@Override
|
||||
protected void onBindViewHolder(@NonNull BannerViewHolder holder, int position, @NonNull Banner model) {
|
||||
holder.banner_name.setText(model.getName());
|
||||
Picasso.with(getBaseContext())
|
||||
.load(model.getImage())
|
||||
.into(holder.banner_image);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public BannerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
adapter.startListening();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
adapter.stopListening();
|
||||
}
|
||||
|
||||
private void showAddBanner() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -16,15 +16,18 @@ import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.firebase.ui.database.FirebaseRecyclerAdapter;
|
||||
import com.firebase.ui.database.FirebaseRecyclerOptions;
|
||||
import com.google.android.gms.tasks.OnSuccessListener;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.FirebaseDatabase;
|
||||
import com.google.firebase.database.Query;
|
||||
import com.google.firebase.storage.FirebaseStorage;
|
||||
import com.google.firebase.storage.OnProgressListener;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
@@ -211,29 +214,41 @@ public class FoodList extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void loadListFood(String categoryId) {
|
||||
adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
|
||||
Food.class,
|
||||
R.layout.food_item,
|
||||
FoodViewHolder.class,
|
||||
foodList.orderByChild("menuId").equalTo(categoryId)
|
||||
) {
|
||||
@Override
|
||||
protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int i) {
|
||||
viewHolder.txtFoodName.setText(model.getName());
|
||||
Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.imageView);
|
||||
|
||||
viewHolder.setItemClickListener(new ItemClickListener() {
|
||||
@Override
|
||||
public void onClick(View view, int position, boolean isLongClick) {
|
||||
//Code later
|
||||
}
|
||||
});
|
||||
Query listFoodByCategoryId = foodList.orderByChild("menuId").equalTo(categoryId);
|
||||
FirebaseRecyclerOptions<Food> options = new FirebaseRecyclerOptions.Builder<Food>()
|
||||
.setQuery(listFoodByCategoryId, Food.class)
|
||||
.build();
|
||||
|
||||
adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(options) {
|
||||
@Override
|
||||
protected void onBindViewHolder(@NonNull FoodViewHolder viewHolder, int i, @NonNull Food model) {
|
||||
viewHolder.txtFoodName.setText(model.getName());
|
||||
Picasso.with(getBaseContext())
|
||||
.load(model.getImage())
|
||||
.into(viewHolder.imageView);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View itemView = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.food_item, parent, false);
|
||||
return new FoodViewHolder(itemView);
|
||||
}
|
||||
};
|
||||
adapter.startListening();
|
||||
|
||||
adapter.notifyDataSetChanged();
|
||||
recyclerView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
adapter.stopListening();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
@@ -9,10 +9,12 @@ import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.Menu;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.firebase.ui.database.FirebaseRecyclerAdapter;
|
||||
import com.firebase.ui.database.FirebaseRecyclerOptions;
|
||||
import com.google.android.gms.tasks.OnSuccessListener;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
@@ -222,6 +224,12 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
loadMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
@@ -241,14 +249,14 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||
}
|
||||
|
||||
private void loadMenu() {
|
||||
adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(
|
||||
Category.class,
|
||||
R.layout.menu_item,
|
||||
MenuViewHolder.class,
|
||||
categories
|
||||
) {
|
||||
|
||||
FirebaseRecyclerOptions<Category> options = new FirebaseRecyclerOptions.Builder<Category>()
|
||||
.setQuery(categories, Category.class)
|
||||
.build();
|
||||
|
||||
adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options) {
|
||||
@Override
|
||||
protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int i) {
|
||||
protected void onBindViewHolder(@NonNull MenuViewHolder viewHolder, int i, @NonNull Category model) {
|
||||
viewHolder.txtMenuName.setText(model.getName());
|
||||
Picasso.with(Home.this).load(model.getImage()).into(viewHolder.imageView);
|
||||
|
||||
@@ -262,17 +270,25 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View itemView = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.menu_item, parent, false);
|
||||
return new MenuViewHolder(itemView);
|
||||
}
|
||||
};
|
||||
adapter.startListening();
|
||||
|
||||
adapter.notifyDataSetChanged(); //Refresh data if have data changed
|
||||
recycler_menu.setAdapter(adapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.home, menu);
|
||||
return true;
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
adapter.stopListening();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -282,6 +298,9 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
||||
if(id == R.id.nav_orders) {
|
||||
Intent orders = new Intent(Home.this, OrderStatus.class);
|
||||
startActivity(orders);
|
||||
} else if(id == R.id.nav_banner) {
|
||||
Intent banner = new Intent(Home.this, BannerActivity.class);
|
||||
startActivity(banner);
|
||||
}
|
||||
|
||||
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.waterbase.foodifyServer.Model;
|
||||
|
||||
public class Banner {
|
||||
private String id, name, image;
|
||||
|
||||
public Banner(String id, String name, String image) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
public Banner() {
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public void setImage(String image) {
|
||||
this.image = image;
|
||||
}
|
||||
}
|
||||
@@ -13,9 +13,11 @@ import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.firebase.ui.database.FirebaseRecyclerAdapter;
|
||||
import com.firebase.ui.database.FirebaseRecyclerOptions;
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
@@ -72,14 +74,14 @@ public class OrderStatus extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void loadOrders() {
|
||||
adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(
|
||||
Request.class,
|
||||
R.layout.order_layout,
|
||||
OrderViewHolder.class,
|
||||
requests
|
||||
) {
|
||||
|
||||
FirebaseRecyclerOptions<Request> options = new FirebaseRecyclerOptions.Builder<Request>()
|
||||
.setQuery(requests, Request.class)
|
||||
.build();
|
||||
|
||||
adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(options) {
|
||||
@Override
|
||||
protected void populateViewHolder(OrderViewHolder viewHolder, Request model, int i) {
|
||||
protected void onBindViewHolder(@NonNull OrderViewHolder viewHolder, int i, @NonNull Request model) {
|
||||
viewHolder.txtOrderId.setText(adapter.getRef(i).getKey());
|
||||
viewHolder.txtOrderStatus.setText(Common.coverCodeToStatus(model.getStatus()));
|
||||
viewHolder.txtOrderAddress.setText(model.getAddress());
|
||||
@@ -89,14 +91,14 @@ public class OrderStatus extends AppCompatActivity {
|
||||
viewHolder.btnEdit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
showUpdateDialog(adapter.getRef(i).getKey(), adapter.getItem(i));
|
||||
showUpdateDialog(adapter.getRef(viewHolder.getAdapterPosition()).getKey(), adapter.getItem(viewHolder.getAdapterPosition()));
|
||||
}
|
||||
});
|
||||
|
||||
viewHolder.btnRemove.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
deleteOrder(adapter.getRef(i).getKey());
|
||||
deleteOrder(adapter.getRef(viewHolder.getAdapterPosition()).getKey());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -105,7 +107,7 @@ public class OrderStatus extends AppCompatActivity {
|
||||
public void onClick(View v) {
|
||||
Intent orderDetail = new Intent(OrderStatus.this, OrderDetail.class);
|
||||
Common.currentRequest = model;
|
||||
orderDetail.putExtra("OrderId", adapter.getRef(i).getKey());
|
||||
orderDetail.putExtra("OrderId", adapter.getRef(viewHolder.getAdapterPosition()).getKey());
|
||||
startActivity(orderDetail);
|
||||
}
|
||||
});
|
||||
@@ -119,11 +121,33 @@ public class OrderStatus extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View itemView = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.order_layout, parent, false);
|
||||
return new OrderViewHolder(itemView);
|
||||
}
|
||||
};
|
||||
adapter.startListening();
|
||||
|
||||
adapter.notifyDataSetChanged();
|
||||
recyclerView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
adapter.stopListening();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
loadOrders();
|
||||
}
|
||||
|
||||
private void deleteOrder(String key) {
|
||||
requests.child(key).removeValue();
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.waterbase.foodifyServer.ViewHolder;
|
||||
|
||||
import android.view.ContextMenu;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.waterbase.foodifyServer.Common.Common;
|
||||
import com.waterbase.foodifyServer.Interface.ItemClickListener;
|
||||
import com.waterbase.foodifyServer.R;
|
||||
|
||||
public class BannerViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener{
|
||||
|
||||
public TextView banner_name;
|
||||
public ImageView banner_image;
|
||||
|
||||
public BannerViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
|
||||
banner_name = itemView.findViewById(R.id.banner_name);
|
||||
banner_image = itemView.findViewById(R.id.banner_image);
|
||||
|
||||
itemView.setOnCreateContextMenuListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
||||
menu.setHeaderTitle("Tuỳ chọn:");
|
||||
|
||||
menu.add(0,0, getAdapterPosition(), Common.UPDATE);
|
||||
menu.add(0,1, getAdapterPosition(), Common.DELETE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,18c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2H4C2.9,4 2,4.9 2,6v10c0,1.1 0.9,2 2,2H0v2h24v-2H20zM4,6h16v10H4V6z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/rootLayout"
|
||||
tools:context=".BannerActivity">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_banner"
|
||||
android:scrollbars="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:backgroundTint="@color/white"
|
||||
app:srcCompat="@drawable/ic_baseline_playlist_add_24"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.cardview.widget.CardView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="200dp"
|
||||
app:cardElevation="4dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/banner_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/banner_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="#4f0e0d0e"
|
||||
android:gravity="center"
|
||||
android:text="Name of Banner"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp" />
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
<group android:checkableBehavior="single">
|
||||
<item
|
||||
android:id="@+id/nav_menu"
|
||||
android:icon="@drawable/ic_baseline_restaurant_24"
|
||||
android:title="Menu" />
|
||||
android:id="@+id/nav_banner"
|
||||
android:icon="@drawable/ic_baseline_laptop_24"
|
||||
android:title="Banner" />
|
||||
<item
|
||||
android:id="@+id/nav_cart"
|
||||
android:icon="@drawable/ic_baseline_shopping_cart_24"
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_settings"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_settings"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
Reference in New Issue
Block a user