mirror of
https://github.com/ClaytonWWilson/Listify.git
synced 2025-12-16 18:48:48 +00:00
Layout for item details page
This commit is contained in:
parent
b951983112
commit
790d935e40
@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.listify">
|
||||
<uses-permission android:name = "android.permission.INTERNET" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<application
|
||||
android:name=".Listify"
|
||||
@ -12,29 +13,33 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true">
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".ItemDetails"
|
||||
android:label=""
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".SearchResults"
|
||||
android:label=""
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
>
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
|
||||
</activity>
|
||||
|
||||
<activity android:name="com.example.listify.ui.SignupPage" />
|
||||
<activity android:name="com.example.listify.ui.LoginPage" />
|
||||
<activity android:name="com.example.listify.ui.ForgotPasswordPage" />
|
||||
<activity android:name="com.example.listify.ui.ResetPasswordPage" />
|
||||
<activity android:name="com.example.listify.ui.CodePage" />
|
||||
<activity android:name=".ui.SignupPage" />
|
||||
<activity android:name=".ui.LoginPage" />
|
||||
<activity android:name=".ui.ForgotPasswordPage" />
|
||||
<activity android:name=".ui.ResetPasswordPage" />
|
||||
<activity android:name=".ui.CodePage" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@ -0,0 +1,83 @@
|
||||
package com.example.listify;
|
||||
|
||||
import android.os.Bundle;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.example.listify.model.Product;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.View;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class ItemDetails extends AppCompatActivity {
|
||||
private Product curProduct;
|
||||
private FloatingActionButton fab1;
|
||||
private FloatingActionButton fab2;
|
||||
private TextView tvItemName;
|
||||
private TextView tvStoreName;
|
||||
private ImageView itemImage;
|
||||
private TextView tvItemDesc;
|
||||
private ImageButton backToSearchbutton;
|
||||
|
||||
private boolean isFABOpen = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_item_details);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
curProduct = (Product) getIntent().getSerializableExtra("SelectedProduct");
|
||||
|
||||
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
|
||||
fab1 = (FloatingActionButton) findViewById(R.id.fab1);
|
||||
fab2 = (FloatingActionButton) findViewById(R.id.fab2);
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (!isFABOpen) {
|
||||
showFABMenu();
|
||||
} else {
|
||||
closeFABMenu();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
tvItemName = (TextView) findViewById(R.id.item_name);
|
||||
tvItemName.setText(curProduct.getItemName());
|
||||
|
||||
itemImage = (ImageView) findViewById(R.id.item_image);
|
||||
Glide.with(this).load(curProduct.getImageUrl()).into(itemImage);
|
||||
|
||||
tvStoreName = (TextView) findViewById(R.id.store_name);
|
||||
tvStoreName.setText(curProduct.getChainName());
|
||||
|
||||
tvItemDesc = (TextView) findViewById(R.id.item_desc);
|
||||
tvItemDesc.setText(curProduct.getDescription());
|
||||
|
||||
backToSearchbutton = (ImageButton) findViewById(R.id.back_to_search_results_button);
|
||||
backToSearchbutton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showFABMenu(){
|
||||
isFABOpen=true;
|
||||
fab1.animate().translationY(-getResources().getDimension(R.dimen.standard_55));
|
||||
fab2.animate().translationY(-getResources().getDimension(R.dimen.standard_105));
|
||||
}
|
||||
|
||||
private void closeFABMenu(){
|
||||
isFABOpen=false;
|
||||
fab1.animate().translationY(0);
|
||||
fab2.animate().translationY(0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -79,8 +79,11 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
// Toast.makeText(SearchResults.this, resultsProductListSorted.get(position).getItemName(), Toast.LENGTH_SHORT).show();
|
||||
Intent itemDetails = new Intent(SearchResults.this, ItemDetails.class);
|
||||
startActivity(itemDetails);
|
||||
Intent itemDetailsPage = new Intent(SearchResults.this, ItemDetails.class);
|
||||
|
||||
// Send the selected product
|
||||
itemDetailsPage.putExtra("SelectedProduct", resultsProductListSorted.get(position));
|
||||
startActivity(itemDetailsPage);
|
||||
}
|
||||
});
|
||||
|
||||
@ -142,13 +145,23 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
Product c = new Product("Lettuce", "0002", "Walmart", "0001", "0123456782", "Burger King foot lettuce", "Grocery", 0.60, "9/24/2020", "1", "https://www.cattitudedaily.com/wp-content/uploads/2019/12/white-cat-meme-feature.jpg");
|
||||
Product d = new Product("Video Game", "0003", "Walmart", "0001", "0123456783", "Fun Vidya Gaemz", "Electronics", 60.00, "9/24/2020", "1", "https://i1.wp.com/bestlifeonline.com/wp-content/uploads/2018/06/cat-meme-67.jpg?resize=1024%2C1024&ssl=1");
|
||||
Product e = new Product("Mountain Dew", "0004", "Walmart", "0001", "0123456784", "Gamer fuel", "Grocery", 5.87, "9/24/2020", "1", "https://memeguy.com/photos/images/gaming-cat-7680.png");
|
||||
Product f = new Product("Tire", "0005", "Walmart", "0001", "0123456785", "30 inch rims", "Automotive", 146.97, "9/24/2020", "1", "http://cdn.sheknows.com/articles/2013/05/pet5.jpg");
|
||||
Product f = new Product("Tire", "0005", "Kroger", "0002", "0123456785", "30 inch rims", "Automotive", 146.97, "9/24/2020", "1", "http://cdn.sheknows.com/articles/2013/05/pet5.jpg");
|
||||
Product g = new Product("This is a test for a product that has a very long title to see if the text overflows", "0006", "Target", "0003", "0123456786", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Elit ut aliquam purus sit amet luctus venenatis. Tellus orci ac auctor augue mauris augue neque gravida. Habitant morbi tristique senectus et netus. Dignissim diam quis enim lobortis. Suspendisse sed nisi lacus sed viverra tellus in. Viverra adipiscing at in tellus integer feugiat scelerisque. Volutpat consequat mauris nunc congue nisi vitae suscipit tellus. Habitant morbi tristique senectus et netus et malesuada. Quis enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mattis pellentesque id nibh tortor id aliquet. Volutpat blandit aliquam etiam erat. Vestibulum lorem sed risus ultricies tristique nulla aliquet.\n" +
|
||||
"\n" +
|
||||
"Placerat orci nulla pellentesque dignissim. Quisque non tellus orci ac. Mattis enim ut tellus elementum sagittis vitae et. Interdum velit euismod in pellentesque massa placerat duis ultricies. Id nibh tortor id aliquet lectus. Massa placerat duis ultricies lacus sed. Convallis convallis tellus id interdum velit laoreet id donec. Amet luctus venenatis lectus magna fringilla urna porttitor rhoncus. Sodales ut eu sem integer vitae justo. Viverra ipsum nunc aliquet bibendum enim facilisis.\n" +
|
||||
"\n" +
|
||||
"Eget felis eget nunc lobortis mattis aliquam faucibus purus. Odio morbi quis commodo odio aenean sed adipiscing. Hac habitasse platea dictumst quisque sagittis purus sit. Nam libero justo laoreet sit. Et malesuada fames ac turpis egestas. Erat nam at lectus urna duis convallis convallis. Morbi tincidunt ornare massa eget egestas purus viverra accumsan in. Ut venenatis tellus in metus vulputate eu scelerisque felis imperdiet. At auctor urna nunc id cursus. Sed elementum tempus egestas sed. Lorem dolor sed viverra ipsum nunc aliquet bibendum. Orci eu lobortis elementum nibh tellus molestie. Porttitor leo a diam sollicitudin tempor. Adipiscing bibendum est ultricies integer quis auctor elit sed. Arcu cursus euismod quis viverra nibh. A diam sollicitudin tempor id eu nisl.\n" +
|
||||
"\n" +
|
||||
"Sapien eget mi proin sed libero enim sed faucibus turpis. Pharetra massa massa ultricies mi quis hendrerit dolor magna. Integer enim neque volutpat ac tincidunt vitae semper. Euismod lacinia at quis risus sed vulputate. Ut venenatis tellus in metus vulputate eu scelerisque. Etiam erat velit scelerisque in dictum non consectetur. Viverra nam libero justo laoreet sit amet cursus sit. Arcu non sodales neque sodales. Vivamus arcu felis bibendum ut tristique et egestas quis. Sed adipiscing diam donec adipiscing tristique risus. Sollicitudin tempor id eu nisl nunc mi ipsum faucibus vitae. Velit ut tortor pretium viverra suspendisse potenti nullam ac tortor. Non nisi est sit amet facilisis magna etiam. Tortor at risus viverra adipiscing. Donec ultrices tincidunt arcu non sodales neque sodales. Eget egestas purus viverra accumsan. Enim lobortis scelerisque fermentum dui faucibus in ornare. Porttitor massa id neque aliquam. Ut consequat semper viverra nam. Orci ac auctor augue mauris augue neque gravida.\n" +
|
||||
"\n" +
|
||||
"Lacus sed viverra tellus in hac habitasse platea dictumst. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Semper feugiat nibh sed pulvinar. Consequat nisl vel pretium lectus quam id leo in. Volutpat maecenas volutpat blandit aliquam etiam erat velit scelerisque. Faucibus a pellentesque sit amet porttitor eget. Sed viverra tellus in hac habitasse platea dictumst vestibulum. Placerat vestibulum lectus mauris ultrices eros in cursus turpis. Sed tempus urna et pharetra pharetra massa massa ultricies mi. Ornare arcu odio ut sem. Ornare arcu dui vivamus arcu felis bibendum ut. Feugiat pretium nibh ipsum consequat. Consectetur adipiscing elit ut aliquam purus sit amet luctus venenatis. Felis eget velit aliquet sagittis id consectetur purus ut.", "Automotive", 45.22, "9/24/2020", "1", "http://cdn.sheknows.com/articles/2013/05/pet5.jpg");
|
||||
resultsProductList.add(a);
|
||||
resultsProductList.add(b);
|
||||
resultsProductList.add(c);
|
||||
resultsProductList.add(d);
|
||||
resultsProductList.add(e);
|
||||
resultsProductList.add(f);
|
||||
resultsProductList.add(g);
|
||||
}
|
||||
|
||||
// Create a list of all stores in the results so the user can filter by store name
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.example.listify.model;
|
||||
|
||||
public class Product {
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Product implements Serializable {
|
||||
private String itemName;
|
||||
private String itemId;
|
||||
private String chainName;
|
||||
|
||||
5
Listify/app/src/main/res/drawable/ic_baseline_add_28.xml
Normal file
5
Listify/app/src/main/res/drawable/ic_baseline_add_28.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<vector android:height="28dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="28dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
|
||||
</vector>
|
||||
70
Listify/app/src/main/res/layout/activity_item_details.xml
Normal file
70
Listify/app/src/main/res/layout/activity_item_details.xml
Normal file
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
|
||||
tools:context=".ItemDetails">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"
|
||||
>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/back_to_search_results_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@drawable/abc_vector_test"
|
||||
android:background="@null"
|
||||
android:contentDescription="@string/backButton"/>
|
||||
|
||||
</androidx.appcompat.widget.Toolbar>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<include layout="@layout/content_item_details" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab2"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_menu_item_margin"
|
||||
app:srcCompat="@android:drawable/ic_menu_camera" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab1"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_menu_item_margin"
|
||||
app:srcCompat="@android:drawable/ic_dialog_map" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
app:srcCompat="@drawable/ic_baseline_add_28" />
|
||||
|
||||
|
||||
<!-- <com.google.android.material.floatingactionbutton.FloatingActionButton-->
|
||||
<!-- android:id="@+id/fab"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_gravity="bottom|end"-->
|
||||
<!-- android:layout_margin="@dimen/fab_margin"-->
|
||||
<!-- app:srcCompat="@android:drawable/ic_dialog_email" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
80
Listify/app/src/main/res/layout/content_item_details.xml
Normal file
80
Listify/app/src/main/res/layout/content_item_details.xml
Normal file
@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_name"
|
||||
android:layout_width="307dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="50dp"
|
||||
android:text="Product Name"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- <Button-->
|
||||
<!-- android:id="@+id/button4"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:text="Button"-->
|
||||
<!-- tools:layout_editor_absoluteX="69dp"-->
|
||||
<!-- tools:layout_editor_absoluteY="368dp" />-->
|
||||
|
||||
<!-- <Button-->
|
||||
<!-- android:id="@+id/button5"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:text="Button"-->
|
||||
<!-- tools:layout_editor_absoluteX="247dp"-->
|
||||
<!-- tools:layout_editor_absoluteY="377dp" />-->
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/item_image"
|
||||
android:layout_width="307dp"
|
||||
android:layout_height="224dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginTop="120dp"
|
||||
android:layout_marginEnd="50dp"
|
||||
android:background="@color/light_gray"
|
||||
android:textAlignment="center"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_desc"
|
||||
android:layout_width="307dp"
|
||||
android:layout_height="300dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginEnd="50dp"
|
||||
android:layout_marginBottom="7dp"
|
||||
android:text="Description"
|
||||
android:layout_marginHorizontal="50dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/store_name"
|
||||
android:layout_width="126dp"
|
||||
android:layout_height="28dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginTop="50dp"
|
||||
android:layout_marginBottom="11dp"
|
||||
android:text="Store"
|
||||
app:layout_constraintBottom_toTopOf="@+id/item_image"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="1.0" />
|
||||
<!-- app:srcCompat="@drawable/ic_baseline_arrow_downward_50"-->
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@ -10,4 +10,5 @@
|
||||
<color name="list_row_end_color">#ffffff</color>
|
||||
<color name="list_row_hover_start_color">#ebeef0</color>
|
||||
<color name="list_row_hover_end_color">#1c9ef4</color>
|
||||
<color name="light_gray">#e6e6e6</color>
|
||||
</resources>
|
||||
@ -5,4 +5,9 @@
|
||||
<dimen name="nav_header_vertical_spacing">8dp</dimen>
|
||||
<dimen name="nav_header_height">176dp</dimen>
|
||||
<dimen name="fab_margin">16dp</dimen>
|
||||
<dimen name="fab_menu_item_margin">20dp</dimen>
|
||||
|
||||
<dimen name="standard_55">55dp</dimen>
|
||||
<dimen name="standard_105">105dp</dimen>
|
||||
<dimen name="standard_155">155dp</dimen>
|
||||
</resources>
|
||||
@ -29,4 +29,5 @@
|
||||
<string name="search_button_desc">Search Button</string>
|
||||
<string name="title_activity_search_results">SearchResults</string>
|
||||
<string name="store_selection">Store selection</string>
|
||||
<string name="title_activity_item_details">ItemDetails</string>
|
||||
</resources>
|
||||
Loading…
Reference in New Issue
Block a user