diff --git a/app/build.gradle b/app/build.gradle index 9bc8b501354c4f17b4f177ce08e8d2de19e7637b..5d20125d0978821481707be6084357981f380b8a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,7 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:23.0.0' + compile 'com.android.support:recyclerview-v7:23.0.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 759c11d7354cef4e7f7931488271976e2c673ff5..60a1ca64771d8f664805534b1690920ed92c5d71 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,7 @@ android:label="@string/app_name" android:theme="@style/AppTheme" > <activity - android:name=".BeverageActivity" + android:name=".BeverageListActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> @@ -16,6 +16,11 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + <activity + android:name=".BeverageActivity" + android:label="@string/app_name" > + </activity> + </application> </manifest> diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/Beverage.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/Beverage.java new file mode 100644 index 0000000000000000000000000000000000000000..40068544c2a5b3e71a6d5e6237250da347b9fdd8 --- /dev/null +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/Beverage.java @@ -0,0 +1,80 @@ +package edu.kvcc.cis298.cis298assignment3; + +import java.util.UUID; + +/** + * Class for each individual instance of a Beverage. + * Created by Waffy on 11/22/2015. + */ +public class Beverage { + + //region Variables + + private UUID mID; + private String mName; + private String mPack; + private double mPrice; // Needs changed to Decimal. + private boolean mActive; + + //endregion + + + + //region Constructor + public Beverage(UUID id, String name, String pack, Double price, Boolean active) { + mID = id; + mName = name; + mPack = pack; + mPrice = price; + mActive = active; + } + + //endregion + + + + //region Properties + + public UUID getID() { + return mID; + } + + public void setID(UUID ID) { + mID = ID; + } + + public String getName() { + return mName; + } + + public void setName(String name) { + mName = name; + } + + public String getPack() { + return mPack; + } + + public void setPack(String pack) { + mPack = pack; + } + + public double getPrice() { + return mPrice; + } + + public void setPrice(double price) { + mPrice = price; + } + + public boolean isActive() { + return mActive; + } + + public void setActive(boolean active) { + mActive = active; + } + + //endregion + +} diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageActivity.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageActivity.java index fc56582f9120d99a15ec25ebf2da7578c7863783..15eb65ff3f3d9bc36a0d78086ed017bd98e3d5f5 100644 --- a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageActivity.java +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageActivity.java @@ -1,13 +1,88 @@ package edu.kvcc.cis298.cis298assignment3; +import android.content.Context; +import android.content.Intent; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -public class BeverageActivity extends AppCompatActivity { +import java.util.List; +import java.util.UUID; + +/** + * Activity class for each individual beverage. + */ +public class BeverageActivity extends FragmentActivity { + + //region Variables + + private ViewPager mViewPager; + private List<Beverage> mBeverages; + + //endregion + + + + //region Intent to summon class. + + private static final String EXTRA_BEVERAGE_ID = "edu.kvcc.cis298.cis298assignment3.beverage_id"; + + public static Intent newIntent(Context packageContext, UUID beverageId) { + + Intent intent = new Intent(packageContext, BeverageActivity.class); + + intent.putExtra(EXTRA_BEVERAGE_ID, beverageId); + return intent; + } + + //endregion + + + + //region Override Methods @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_fragment); + // Sets content to use beverage pager. + setContentView(R.layout.activity_beverage_view_pager); + + UUID beverageId = (UUID) getIntent().getSerializableExtra(EXTRA_BEVERAGE_ID); + + mViewPager = (ViewPager) findViewById(R.id.activity_beverage_view_pager); + + // Get list of beverages. + mBeverages = BeverageList.get(this).getBeverages(); + // Create new fragment and adapter. + FragmentManager fragmentManager = getSupportFragmentManager(); + mViewPager.setAdapter(new FragmentPagerAdapter(fragmentManager) { + @Override + public Fragment getItem(int i) { + // Fetch the specific beverage using the ID. + Beverage beverage = mBeverages.get(i); + return BeverageFragment.newInstance(beverage.getID()); + } + + @Override + public int getCount() { + return mBeverages.size(); + } + }); + + // Go through list and find matching ID. Set that one to current pager index. + for (int i = 0; i < mBeverages.size(); i++) { + if (mBeverages.get(i).getID().equals(beverageId)) { + mViewPager.setCurrentItem(i); + break; + } + } } + + //endregion + + } diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageFragment.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..cfe1b5c9c016c0a8ad6ef4e06f1cf59d0ec4ae82 --- /dev/null +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageFragment.java @@ -0,0 +1,143 @@ +package edu.kvcc.cis298.cis298assignment3; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.EditText; +import android.widget.TextView; + +import java.util.UUID; + +/** + * Fragment class to display each beverage. + * Created by Waffy on 11/22/2015. + */ +public class BeverageFragment extends Fragment{ + + //region Variables + + private Beverage mBeverage; + private TextView mIdField; + private EditText mNameField; + private EditText mPackField; + private EditText mPriceField; + private CheckBox mActiveCheckBox; + + //endregion + + + + //region Static information to summon Fragment. + + private static final String ARG_BEVERAGE_ID = "beverage_id"; + + public static BeverageFragment newInstance(UUID beverageId) { + Bundle args = new Bundle(); + args.putSerializable(ARG_BEVERAGE_ID, beverageId); + + BeverageFragment fragment = new BeverageFragment(); + fragment.setArguments(args); + return fragment; + } + + //endregion + + + + //region Override Methods + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.fragment_beverage, container, false); + + // Set all the beverage variables. + mIdField = (TextView)v.findViewById(R.id.beverage_id); + mIdField.setText(mBeverage.getID().toString()); + + + mNameField = (EditText)v.findViewById(R.id.beverage_name); + mNameField.setText(mBeverage.getName()); + mNameField.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // Intentionally left blank. + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + mBeverage.setName(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + // Intentionally left blank. + } + }); + + + mPackField = (EditText)v.findViewById(R.id.beverage_pack); + mPackField.setText(mBeverage.getPack()); + mPackField.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // Intentionally left blank. + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + mBeverage.setPack(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + // Intentionally left blank. + } + }); + + + mPriceField = (EditText)v.findViewById(R.id.beverage_price); + mPriceField.setText(Double.toString(mBeverage.getPrice())); + mPackField.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // Intentionally left blank. + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + mBeverage.setPrice(Double.parseDouble(s.toString())); + } + + @Override + public void afterTextChanged(Editable s) { + // Intentionally left blank. + } + }); + + + mActiveCheckBox = (CheckBox)v.findViewById(R.id.beverage_active); + mActiveCheckBox.setChecked(mBeverage.isActive()); + mActiveCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + mBeverage.setActive(isChecked); + } + }); + + + return v; + } + + + //endregion + + +} diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageList.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageList.java new file mode 100644 index 0000000000000000000000000000000000000000..16586b872d5868db419b0e668af3de65e445ae7a --- /dev/null +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageList.java @@ -0,0 +1,128 @@ +package edu.kvcc.cis298.cis298assignment3; + +import android.content.Context; +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.util.UUID; + +/** + * Singleton class which holds list of beverages. + * Created by Waffy on 11/22/2015. + */ +public class BeverageList { + + //region Singleton Setup + + private static BeverageList sBeverageList; + + public static BeverageList get(Context context) { + if (sBeverageList == null) { + sBeverageList = new BeverageList(context); + } + return sBeverageList; + } + + //endregion + + + + //region Variables + + private List<Beverage> mBeverages; + private Context mContext; + + //endregion + + + + //region Constructor + + private BeverageList(Context context) { + // Create list to hold data. + mBeverages = new ArrayList<>(); + mContext = context; + loadBeverageList(); + } + + //endregion + + + + //region Properties + + public List<Beverage> getBeverages() { + return mBeverages; + } + + //endregion + + + + //region Methods + + // Find beverage with Id. + public Beverage getBeverage(UUID id) { + for (Beverage beverage : mBeverages) { + if (beverage.getID().equals(id)) { + return beverage; + } + } + return null; + } + + // Load in data from CSV. + public void loadBeverageList() { + // Create scanner which is used to read from file. + Scanner scanner = null; + + // Attempt to read in from CSV. + try { + // Set path for scanner? + scanner = new Scanner(mContext.getResources().openRawResource(R.raw.beverage_list)); + + // While scanner recognizes that there are still lines to read. + while (scanner.hasNextLine()) { + // Assign next line to string. + String line = scanner.nextLine(); + // Separate string by commas. + String parts[] = line.split(","); + Log.d(line, line); + + // Assign each split part to a meaningful variable. + String idString = parts[0].toString().trim(); + String nameString = parts[1].toString().trim(); + String packString = parts[2].toString().trim(); + String priceString = parts[3].toString().trim(); + String activeString = parts[4].toString().trim(); + + // Parse the id into an actual UUID. + UUID uuid = UUID.fromString(idString); + + // Parse the price into double. + Double priceDouble = Double.parseDouble(priceString); + + // Parse active into bool. + boolean isActive; + if (activeString.equals("T")) { + isActive = true; + } else { + isActive = false; + } + + mBeverages.add(new Beverage(uuid, nameString, packString, priceDouble, isActive)); + } + } catch (Exception error) { + // If error, log to console. + Log.e("Read CSV Error", error.toString()); + } finally { + // Regardless of successful or not, close scanner to prevent memory leak. + scanner.close(); + } + } + + //endregion + +} diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageListActivity.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageListActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..f30951aecc412774a2d0042e2d582bb3febb0825 --- /dev/null +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageListActivity.java @@ -0,0 +1,15 @@ +package edu.kvcc.cis298.cis298assignment3; + +import android.support.v4.app.Fragment; + +/** + * Activity class for Beverage List. + * Created by Waffy on 11/22/2015. + */ +public class BeverageListActivity extends SingleFragmentActivity { + + @Override + protected Fragment createFragment() { + return new BeverageListFragment(); + } +} diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageListFragment.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageListFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..29a40cfb88ef9784bf6ea2449f49c7e303496e30 --- /dev/null +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/BeverageListFragment.java @@ -0,0 +1,149 @@ +package edu.kvcc.cis298.cis298assignment3; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import java.util.List; + +/** + * Fragment to display the Beverage List. + * Created by Waffy on 11/22/2015. + */ +public class BeverageListFragment extends Fragment { + + //region Variables + + private RecyclerView mBeverageRecyclerView; + private BeverageAdapter mAdapter; + + //endregion + + + //region Override Methods + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + // Inflates view from xml into java-readable code. + View view = inflater.inflate(R.layout.fragment_beverage_list, container, false); + + // Get a reference to the RecyclerView. + mBeverageRecyclerView = (RecyclerView) view.findViewById(R.id.beverage_recycler_view); + // LayoutManager so RecyclerView doesn't crash. + mBeverageRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + + updateUI(); + + return view; + } + + // Checks to see if data has changed on every resume. That way user never sees outdated info. + @Override + public void onResume() { + super.onResume(); + updateUI(); + } + + //endregion + + + + // Class within a class? Why? + private class BeverageHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + + // Variables + private Beverage mBeverage; + private TextView mIdTextView; + private TextView mNameTextView; + private TextView mPriceTextView; + + // Constructor for BeverageHolder. + public BeverageHolder(View itemView) { + super(itemView); + itemView.setOnClickListener(this); + + // Assign ID to variables. + mIdTextView = (TextView) itemView.findViewById(R.id.list_item_beverage_id_text_view); + mNameTextView = (TextView) itemView.findViewById(R.id.list_item_beverage_name_text_view); + mPriceTextView = (TextView) itemView.findViewById(R.id.list_item_beverage_price_text_view); + + } + + // Binds individual BeverageHolder views (created above) to layout. + public void bindBeverage(Beverage beverage) { + mBeverage = beverage; + mIdTextView.setText(mBeverage.getID().toString()); + mNameTextView.setText(mBeverage.getName()); + mPriceTextView.setText(Double.toString(mBeverage.getPrice())); + } + + @Override + public void onClick(View v) { + // Creates intent using specified method in BeverageActivity. + Intent intent = BeverageActivity.newIntent(getActivity(), mBeverage.getID()); + startActivity(intent); + } + } + + //Another class within a class. + // Adapts information so that RecyclerView can display things. + private class BeverageAdapter extends RecyclerView.Adapter<BeverageHolder> { + + // List to hold beverages. + private List<Beverage> mBeverages; + + // Constructor. + public BeverageAdapter(List<Beverage> beverages) { + mBeverages = beverages; + } + + // Override methods for BeverageAdapter. + + @Override + public BeverageHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + // Creates a new View to put into viewHolder. + LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); + // Inflates view of single list item to xml layout? + View view = layoutInflater.inflate(R.layout.list_item_beverage, viewGroup, false); + return new BeverageHolder(view); + } + + @Override + public void onBindViewHolder(BeverageHolder beverageHolder, int i) { + // Finds the position on the screen to bind to. + Beverage beverage = mBeverages.get(i); + // Sends info to BeverageHolder Class. + beverageHolder.bindBeverage(beverage); + } + + @Override + public int getItemCount() { + return mBeverages.size(); + } + } + + // Does the work of getting data from List and setting it up with adapter. Basically updates things. + private void updateUI() + { + BeverageList beverageList = BeverageList.get(getActivity()); + List<Beverage> beverages = beverageList.getBeverages(); + + if (mAdapter == null) { + mAdapter = new BeverageAdapter(beverages); + mBeverageRecyclerView.setAdapter(mAdapter); + } else { + mAdapter.notifyDataSetChanged(); + } + } + + +} diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment3/SingleFragmentActivity.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/SingleFragmentActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..b8d2a09d8554201a5c5210133bb6697dfbca3602 --- /dev/null +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment3/SingleFragmentActivity.java @@ -0,0 +1,34 @@ +package edu.kvcc.cis298.cis298assignment3; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; + +/** + * Abstract class which all fragments inherit from. + * Created by Waffy on 11/22/2015. + */ +public abstract class SingleFragmentActivity extends FragmentActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + //Inflates view using xml. + setContentView(R.layout.activity_fragment); + + //Initialize fragment manager. Is needed for all fragments. + FragmentManager fm = getSupportFragmentManager(); + Fragment fragment = fm.findFragmentById(R.id.fragment_container); + + // If null, create new Fragment. + if (fragment == null) { + fragment = createFragment(); + fm.beginTransaction().add(R.id.fragment_container, fragment).commit(); + } + } + + // Abstract method to create fragment. + protected abstract Fragment createFragment(); +} diff --git a/app/src/main/res/layout/activity_beverage.xml b/app/src/main/res/layout/activity_beverage.xml new file mode 100644 index 0000000000000000000000000000000000000000..3509b84116acf632edfb98c5a360ce25933cfee6 --- /dev/null +++ b/app/src/main/res/layout/activity_beverage.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" android:layout_width="match_parent" + android:layout_height="match_parent"> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_beverage_view_pager.xml b/app/src/main/res/layout/activity_beverage_view_pager.xml new file mode 100644 index 0000000000000000000000000000000000000000..91c7045a33c836fb3c992f4c1577215c462d9ced --- /dev/null +++ b/app/src/main/res/layout/activity_beverage_view_pager.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--xml for view pager fragment of crime--> + + +<android.support.v4.view.ViewPager + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/activity_beverage_view_pager" + android:layout_width="match_parent" + android:layout_height="match_parent"> + +</android.support.v4.view.ViewPager> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fragment.xml b/app/src/main/res/layout/activity_fragment.xml index a4aaa8ea520823b9b43fa4c0fc8a786a4f8ca6c8..49c014b602f427752e22a541989d7f4987c336c6 100644 --- a/app/src/main/res/layout/activity_fragment.xml +++ b/app/src/main/res/layout/activity_fragment.xml @@ -1,11 +1,9 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" - android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".WineActivity"> +<!--xml for generic fragment creation--> - <TextView android:text="@string/hello_world" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/fragment_container" + android:layout_width="match_parent" + android:layout_height="match_parent" > -</RelativeLayout> + +</FrameLayout> diff --git a/app/src/main/res/layout/fragment_beverage.xml b/app/src/main/res/layout/fragment_beverage.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ff03127defd19cafff966e1d8949e514224c6aa --- /dev/null +++ b/app/src/main/res/layout/fragment_beverage.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--xml for a fragment of beverage--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <TextView + android:id="@+id/beverage_id" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/beverage_id_label" /> + + <EditText + android:id="@+id/beverage_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/beverage_name_hint" /> + + <EditText + android:id="@+id/beverage_pack" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/beverage_pack_hint" /> + + <EditText + android:id="@+id/beverage_price" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/beverage_price_hint" + android:inputType="numberDecimal" /> + + <CheckBox + android:id="@+id/beverage_active" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/beverage_active_label" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_beverage_list.xml b/app/src/main/res/layout/fragment_beverage_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..18c731bbf0237d6681855dc6b17e586d8c1c206f --- /dev/null +++ b/app/src/main/res/layout/fragment_beverage_list.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--xml for RecyclerView and BeverageList--> + + +<android.support.v7.widget.RecyclerView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/beverage_recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" > + +</android.support.v7.widget.RecyclerView> \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_beverage.xml b/app/src/main/res/layout/list_item_beverage.xml new file mode 100644 index 0000000000000000000000000000000000000000..f33cca256ac65166ad6f37ffef0d92bd24029742 --- /dev/null +++ b/app/src/main/res/layout/list_item_beverage.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--xml for each individual item in the Beveragelist--> + + +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + + + <TextView + android:id="@+id/list_item_beverage_name_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:textStyle="bold" + android:padding="4dp" + tools:text="Beverage Name"/> + + <TextView + android:id="@+id/list_item_beverage_id_text_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/list_item_beverage_name_text_view" + android:textStyle="italic" + android:padding="4dp" + tools:text="Beverage ID" /> + + <TextView + android:id="@+id/list_item_beverage_price_text_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toRightOf="@id/list_item_beverage_id_text_view" + android:layout_below="@id/list_item_beverage_name_text_view" + android:padding="4dp" /> + + + + + + +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87ef60f113732db63c3cbf4242e9617c3d3e4c3c..1753b12b8b78d77b102e289548ecef7c2c62c1f9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,15 @@ <resources> <string name="app_name">CIS298Assignment3</string> - <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> + + <string name="beverage_name_hint">Enter a name for the beverage.</string> + <string name="beverage_pack_hint">Enter a pack for the beverage.</string> + <string name="beverage_price_hint">Enter a price for the beverage.</string> + <string name="beverage_id_label">ID</string> + <string name="beverage_name_label">Name</string> + <string name="beverage_pack_label">Pack</string> + <string name="beverage_price_label">Price</string> + <string name="beverage_active_label">Active</string> + </resources>