From 6eb0e704d15bfa26e387a42b35cd6f1d61c180a0 Mon Sep 17 00:00:00 2001
From: Georg Reisinger <43533139+GeorgReisinger@users.noreply.github.com>
Date: Sun, 17 Feb 2019 20:49:03 +0100
Subject: [PATCH] Item delete, edit, add, show. All Lists refreshable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Items können gelöscht, bearbeitet, hinzugefügt und angezeigt werden
Alle Card Views können mit Swipe to refresh aktualisiert werden
---
.idea/misc.xml | 2 +-
.../smartshopper/activitys/Dash.java | 11 +-
.../activitys/ItemListActivity.java | 176 +++++++++++++++++-
.../activitys/ShoppinglistDetails.java | 135 ++++----------
.../smartshopper/db/Database.java | 2 +-
.../shoppinglist/details/DetailsAdapter.java | 64 +++----
.../shoppinglist/details/group/Group.java | 10 +-
.../details/item/ItemAdapter.java | 46 ++++-
.../item/ItemShoppinglistDetailsAdapter.java | 112 +++++++++++
.../main/res/layout/activity_item_list.xml | 152 +++++++++------
.../layout/activity_shoppinglist_details.xml | 28 ++-
app/src/main/res/layout/add_group_dialog.xml | 2 +-
app/src/main/res/layout/add_item_dialog.xml | 2 +-
.../res/layout/add_shoppinglist_dialog.xml | 2 +-
app/src/main/res/layout/cardviewgroup.xml | 13 --
app/src/main/res/layout/cardviewitem.xml | 89 ++++++---
.../cardviewitemshoppinglistdetails.xml | 39 ++++
17 files changed, 609 insertions(+), 276 deletions(-)
create mode 100644 app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/item/ItemShoppinglistDetailsAdapter.java
create mode 100644 app/src/main/res/layout/cardviewitemshoppinglistdetails.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 703e5d4..af0bbdd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java
index a941daf..b9804f7 100644
--- a/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java
+++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java
@@ -25,6 +25,7 @@ import at.smartshopper.smartshopper.R;
import android.widget.PopupWindow;
import android.widget.TabHost;
+import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
@@ -32,6 +33,7 @@ import com.google.firebase.auth.FirebaseUser;
import com.squareup.picasso.Picasso;
import org.json.JSONException;
+import org.w3c.dom.Text;
import java.sql.SQLException;
import java.util.List;
@@ -140,7 +142,7 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte
@Override
public void onClick(View v) {
try {
- showShoppinglistEditView(false, null, v);
+ showShoppinglistEditView(false, null, "Shoppingliste erstellen", v);
} catch (SQLException e) {
e.printStackTrace();
} catch (JSONException e) {
@@ -164,13 +166,16 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte
* @param sl_id Muss nur eine sl_id drinnen sein wenn fromDB true ist
* @param v der View auf dem das Popup sein soll
*/
- private void showShoppinglistEditView(final boolean fromDB, String sl_id, View v) throws SQLException, JSONException {
+ private void showShoppinglistEditView(final boolean fromDB, String sl_id, String title, View v) throws SQLException, JSONException {
final LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final String username = FirebaseAuth.getInstance().getCurrentUser().getUid();
View customView = inflater.inflate(R.layout.add_shoppinglist_dialog, null);
+ TextView fensterTitle = (TextView) customView.findViewById(R.id.shoppinglisteAddTitle);
+ fensterTitle.setText(title);
+
ImageButton addClose = (ImageButton) customView.findViewById(R.id.addClose);
colorBtn = (Button) customView.findViewById(R.id.addColor);
Button addFertig = (Button) customView.findViewById(R.id.addFertig);
@@ -425,7 +430,7 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte
@Override
public void onChangeItemClick(String sl_id, View v) {
try {
- showShoppinglistEditView(true, sl_id, v);
+ showShoppinglistEditView(true, sl_id, "Shoppingliste bearbeiten", v);
} catch (SQLException e) {
e.printStackTrace();
} catch (JSONException e) {
diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java
index f15f8f1..f10213a 100644
--- a/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java
+++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java
@@ -1,27 +1,46 @@
package at.smartshopper.smartshopper.activitys;
-import android.content.Intent;
-import android.os.Bundle;
import android.app.Activity;
+import android.content.Intent;
+import android.graphics.Color;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
import org.json.JSONException;
import java.sql.SQLException;
-import java.util.ArrayList;
import java.util.List;
import at.smartshopper.smartshopper.R;
import at.smartshopper.smartshopper.db.Database;
-import at.smartshopper.smartshopper.shoppinglist.details.Details;
-import at.smartshopper.smartshopper.shoppinglist.details.DetailsAdapter;
import at.smartshopper.smartshopper.shoppinglist.details.item.Item;
import at.smartshopper.smartshopper.shoppinglist.details.item.ItemAdapter;
public class ItemListActivity extends Activity implements ItemAdapter.OnItemEditClicked, ItemAdapter.OnItemDelClicked {
- private String group_id;
+ private String group_id, groupNameString;
private String sl_id;
+ private PopupWindow popupWindowItem;
+ private FloatingActionButton fabAddItem;
+ private TextView groupName;
+ private String colorString;
+ private Database db = new Database();
+ private View colorView;
+ private SwipeRefreshLayout swipeRefreshLayoutItem;
@Override
@@ -32,6 +51,50 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit
Intent myIntent = getIntent(); // gets the previously created intent
this.group_id = myIntent.getStringExtra("group_id"); // will return "FirstKeyValue"
this.sl_id = myIntent.getStringExtra("sl_id"); // will return "SecondKeyValue"
+ this.groupNameString = myIntent.getStringExtra("groupNameString"); // will return "SecondKeyValue"
+
+ this.groupName = (TextView)findViewById(R.id.groupViewName);
+ this.groupName.setText(groupNameString);
+
+ this.colorView = (View) findViewById(R.id.itemListColorView);
+
+ try {
+ this.colorView.setBackgroundColor(Color.parseColor(db.getGroup(group_id, sl_id).getColor()));
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ this.swipeRefreshLayoutItem = (SwipeRefreshLayout) findViewById(R.id.itemListRefresh);
+ this.swipeRefreshLayoutItem.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ try {
+ showItems(group_id, sl_id);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ swipeRefreshLayoutItem.setRefreshing(false);
+ }
+ });
+
+ this.fabAddItem = (FloatingActionButton)findViewById(R.id.fabItemAdd);
+
+ fabAddItem.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ try {
+ showPopupItemEdit(false, sl_id, group_id, null, "Item erstellen", v);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ });
try {
@@ -69,11 +132,106 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit
@Override
public void onItemDelClicked(String item_id, String group_id, String sl_id) {
-
+ try {
+ swipeRefreshLayoutItem.setRefreshing(true);
+ db.deleteItem(item_id, group_id, sl_id);
+ showItems(group_id, sl_id);
+ swipeRefreshLayoutItem.setRefreshing(false);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
}
@Override
- public void onItemEditClicked(String item_id, String group_id, String sl_id, String newname, int newcount) {
-
+ public void onItemEditClicked(String item_id, String group_id, String sl_id, View v) {
+ try {
+ showPopupItemEdit(true, sl_id, group_id, item_id, "Item bearbeiten", v);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
}
+
+ private void showPopupItemEdit(final boolean fromDB, final String sl_id, final String group_id, final String item_id, String title, View v) throws SQLException, JSONException {
+ final LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
+
+
+ View customView = inflater.inflate(R.layout.add_item_dialog, null);
+
+ TextView addGroupTitle = (TextView) customView.findViewById(R.id.addItemTitle);
+ addGroupTitle.setText(title);
+
+ ImageButton close = (ImageButton) customView.findViewById(R.id.itemClose);
+ final EditText name = (EditText) customView.findViewById(R.id.itemName);
+ final EditText count = (EditText) customView.findViewById(R.id.itemAnzahl);
+ Button finish = (Button) customView.findViewById(R.id.itemFinish);
+
+
+ Picasso.get().load(R.drawable.close).into(close);
+
+ if (fromDB) {
+ Item dbitem = db.getItem(item_id);
+
+
+ name.setText(dbitem.getName());
+ count.setText(dbitem.getCount());
+ } else {
+ colorString = "ffffff";
+ }
+
+ finish.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (fromDB) {
+ try {
+ db.editItem(item_id, group_id, sl_id, name.getText().toString(), Integer.parseInt(count.getText().toString()));
+ showItems(group_id, sl_id);
+ popupWindowItem.dismiss();
+ colorString = "ffffff";
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ } else {
+ try {
+ db.addItem(group_id, sl_id, name.getText().toString(), Integer.parseInt(count.getText().toString()));
+ showItems(group_id, sl_id);
+ popupWindowItem.dismiss();
+ colorString = "ffffff";
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+
+ close.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ popupWindowItem.dismiss();
+ }
+ });
+
+ popupWindowItem = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+
+ // Set an elevation value for popup window
+ // Call requires API level 21
+ if (Build.VERSION.SDK_INT >= 21) {
+ popupWindowItem.setElevation(5.0f);
+ }
+
+ popupWindowItem.setOutsideTouchable(false);
+ popupWindowItem.setFocusable(true);
+
+
+ popupWindowItem.showAtLocation(v, Gravity.CENTER, 0, 0);
+ popupWindowItem.update();
+ }
+
}
diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java
index 84df056..23429a8 100644
--- a/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java
+++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java
@@ -6,6 +6,7 @@ import android.os.Build;
import android.os.Bundle;
import android.app.Activity;
import android.support.design.widget.FloatingActionButton;
+import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
@@ -16,15 +17,12 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.PopupWindow;
-import android.widget.Toast;
+import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import com.squareup.picasso.Picasso;
-
import org.json.JSONException;
-
import java.sql.SQLException;
-import java.util.ArrayList;
import java.util.List;
import at.smartshopper.smartshopper.R;
@@ -33,9 +31,8 @@ import at.smartshopper.smartshopper.shoppinglist.Shoppinglist;
import at.smartshopper.smartshopper.shoppinglist.details.Details;
import at.smartshopper.smartshopper.shoppinglist.details.DetailsAdapter;
import at.smartshopper.smartshopper.shoppinglist.details.group.Group;
-import at.smartshopper.smartshopper.shoppinglist.details.item.Item;
-public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGroupEditClicked, DetailsAdapter.OnGroupDeleteClicked, DetailsAdapter.OnItemAddClicked, DetailsAdapter.OnCardClicked {
+public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGroupEditClicked, DetailsAdapter.OnGroupDeleteClicked, DetailsAdapter.OnCardClicked {
private Database db = new Database();
private FloatingActionButton fab;
@@ -43,6 +40,7 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
private PopupWindow popupWindow;
private PopupWindow popupWindowItem;
private Button colorBtn;
+ private SwipeRefreshLayout detailsSwiperefresh;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -70,7 +68,9 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
@Override
public void onClick(View v) {
try {
- showPupupGroupEdit(false, null, finalSl_id, v);
+ detailsSwiperefresh.setRefreshing(true);
+ showPupupGroupEdit(false, null, finalSl_id, "Gruppe erstellen", v);
+ detailsSwiperefresh.setRefreshing(false);
} catch (SQLException e) {
e.printStackTrace();
} catch (JSONException e) {
@@ -87,6 +87,22 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
e.printStackTrace();
}
+ detailsSwiperefresh = (SwipeRefreshLayout) findViewById(R.id.detailsRefreshSwipe);
+ final String finalSl_id1 = sl_id;
+ detailsSwiperefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ try {
+ showDetails(finalSl_id1);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ detailsSwiperefresh.setRefreshing(false);
+ }
+ });
+
}
/**
@@ -97,13 +113,15 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
* @param groupid Wenn fromDb true ist wird diese id benötigt um das richtige element zu bearbeiten
* @param v Der view auf dem das popup platziert werden soll
*/
- private void showPupupGroupEdit(final boolean fromDB, final String groupid, final String sl_id, View v) throws SQLException, JSONException {
+ private void showPupupGroupEdit(final boolean fromDB, final String groupid, final String sl_id, String title, View v) throws SQLException, JSONException {
final LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
final String username = FirebaseAuth.getInstance().getCurrentUser().getUid();
View customView = inflater.inflate(R.layout.add_group_dialog, null);
+ TextView addGroupTitle = (TextView) customView.findViewById(R.id.addgruppetitle);
+ addGroupTitle.setText(title);
ImageButton close = (ImageButton) customView.findViewById(R.id.groupClose);
final EditText name = (EditText) customView.findViewById(R.id.groupName);
Button color = (Button) customView.findViewById(R.id.groupColor);
@@ -122,7 +140,7 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
colorstring = "#" + dbgroup.getColor();
}
color.setBackgroundColor(Color.parseColor(colorstring));
- name.setText(dbgroup.getName());
+ name.setText(dbgroup.getGroupName());
} else {
colorString = "ffffff";
}
@@ -239,92 +257,17 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
DetailsAdapter detailsAdapter = new DetailsAdapter(detailsList);
detailsAdapter.setGroupEditClick(this);
detailsAdapter.setGroupDeleteClick(this);
- detailsAdapter.setItemAddClick(this);
detailsAdapter.setCardClick(this);
detailsRecycleView.setAdapter(detailsAdapter);
}
-
- private void showPopupItemEdit(final boolean fromDB, final String sl_id, final String group_id, String item_id, View v) throws SQLException, JSONException {
- final LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
-
-
- View customView = inflater.inflate(R.layout.add_item_dialog, null);
-
- ImageButton close = (ImageButton) customView.findViewById(R.id.itemClose);
- final EditText name = (EditText) customView.findViewById(R.id.itemName);
- final EditText count = (EditText) customView.findViewById(R.id.itemAnzahl);
- Button finish = (Button) customView.findViewById(R.id.itemFinish);
-
-
- Picasso.get().load(R.drawable.close).into(close);
-
- if (fromDB) {
- Item dbitem = db.getItem(item_id);
-
-
- name.setText(dbitem.getName());
- } else {
- colorString = "ffffff";
- }
-
- finish.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (fromDB) {
- try {
-
- showDetails(sl_id);
- popupWindow.dismiss();
- colorString = "ffffff";
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- } else {
- try {
- db.addItem(group_id, sl_id, name.getText().toString(), Integer.parseInt(count.getText().toString()));
- showDetails(sl_id);
- popupWindowItem.dismiss();
- colorString = "ffffff";
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }
- });
-
- close.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- popupWindowItem.dismiss();
- }
- });
-
- popupWindowItem = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-
- // Set an elevation value for popup window
- // Call requires API level 21
- if (Build.VERSION.SDK_INT >= 21) {
- popupWindowItem.setElevation(5.0f);
- }
-
- popupWindowItem.setOutsideTouchable(false);
- popupWindowItem.setFocusable(true);
-
-
- popupWindowItem.showAtLocation(v, Gravity.CENTER, 0, 0);
- popupWindowItem.update();
- }
-
@Override
public void onGroupEditClick(String sl_id, String group_id, View v) {
try {
- showPupupGroupEdit(true, group_id, sl_id, v);
+ detailsSwiperefresh.setRefreshing(true);
+ showPupupGroupEdit(true, group_id, sl_id, "Gruppe bearbeiten", v);
+ detailsSwiperefresh.setRefreshing(false);
} catch (SQLException e) {
e.printStackTrace();
} catch (JSONException e) {
@@ -335,8 +278,10 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
@Override
public void onGroupDeleteClick(String sl_id, String group_id, View v) {
try {
+ detailsSwiperefresh.setRefreshing(true);
db.deleteGroup(group_id, sl_id);
showDetails(sl_id);
+ detailsSwiperefresh.setRefreshing(false);
} catch (SQLException e) {
e.printStackTrace();
} catch (JSONException e) {
@@ -345,24 +290,12 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr
}
@Override
- public void onItemAddClick(String sl_id, String group_id, String item_id, View v) {
-
- try {
- showPopupItemEdit(false, sl_id, group_id, item_id, v);
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
-
- }
-
- @Override
- public void onCardClick(String group_id, String sl_id, View v) {
+ public void onCardClick(String group_id, String sl_id, String groupName, View v) {
finish();
Intent intent = new Intent(this, ItemListActivity.class);
intent.putExtra("group_id", group_id);
intent.putExtra("sl_id", sl_id);
+ intent.putExtra("groupNameString", groupName);
startActivity(intent);
}
}
diff --git a/app/src/main/java/at/smartshopper/smartshopper/db/Database.java b/app/src/main/java/at/smartshopper/smartshopper/db/Database.java
index 8aa45f0..e74a97b 100644
--- a/app/src/main/java/at/smartshopper/smartshopper/db/Database.java
+++ b/app/src/main/java/at/smartshopper/smartshopper/db/Database.java
@@ -137,7 +137,7 @@ public class Database {
public void editGroup(String sl_id, String group_id, String newname, String newcolor, String newhidden) throws SQLException, JSONException {
Group oldgroup = getGroup(group_id, sl_id);
- if (!oldgroup.getName().equals(newname) && newname != null) {
+ if (!oldgroup.getGroupName().equals(newname) && newname != null) {
sqlUpdate3Param("UPDATE \"Group\" SET name = ? WHERE group_id = ? AND sl_id = ?", newname, group_id, sl_id);
}
diff --git a/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/DetailsAdapter.java b/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/DetailsAdapter.java
index 221cbd5..5319811 100644
--- a/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/DetailsAdapter.java
+++ b/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/DetailsAdapter.java
@@ -1,8 +1,8 @@
package at.smartshopper.smartshopper.shoppinglist.details;
import android.app.Activity;
+import android.content.Intent;
import android.graphics.Color;
-import android.media.Image;
import android.support.annotation.NonNull;
import android.support.v7.widget.CardView;
import android.support.v7.widget.LinearLayoutManager;
@@ -11,25 +11,19 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
-import android.widget.ImageView;
import android.widget.TextView;
-
import com.squareup.picasso.Picasso;
-
import java.util.List;
-
import at.smartshopper.smartshopper.R;
+import at.smartshopper.smartshopper.activitys.ItemListActivity;
import at.smartshopper.smartshopper.activitys.ShoppinglistDetails;
-import at.smartshopper.smartshopper.customViews.RoundCornersTransformation;
import at.smartshopper.smartshopper.db.Database;
-import at.smartshopper.smartshopper.shoppinglist.ShoppinglistAdapter;
-import at.smartshopper.smartshopper.shoppinglist.details.item.ItemAdapter;
+import at.smartshopper.smartshopper.shoppinglist.details.item.ItemShoppinglistDetailsAdapter;
-public class DetailsAdapter extends RecyclerView.Adapter {
+public class DetailsAdapter extends RecyclerView.Adapter implements ItemShoppinglistDetailsAdapter.OnItemEditClicked {
private List details;
private OnGroupEditClicked onGroupEditClicked;
- private OnItemAddClicked onItemAddClicked;
private OnGroupDeleteClicked onGroupDeleteClicked;
private OnCardClicked onCardClicked;
@@ -62,18 +56,17 @@ public class DetailsAdapter extends RecyclerView.Adapter itemsList = details.get(i).getItems();
- ItemAdapter itemAdapter = new ItemAdapter(itemsList);
+ ItemShoppinglistDetailsAdapter itemAdapter = new ItemShoppinglistDetailsAdapter(itemsList);
+ itemAdapter.setOnItemEditClick(this);
itemsrecycle.setAdapter(itemAdapter);
@@ -88,23 +81,14 @@ public class DetailsAdapter extends RecyclerView.Adapter {
@@ -55,16 +62,39 @@ public class ItemAdapter extends RecyclerView.Adapter
final TextView itemAnzahl = myViewHolder.itemAnzahl;
CheckBox itemErledigt = myViewHolder.erledigtItem;
ImageView itemDel = myViewHolder.itemDel;
+ CardView itemCardView = myViewHolder.itemCardView;
+ //View colorBox = myViewHolder.colorBox;
+
+
+ /*
+ int cardcolor = 0;
+ try {
+ Database db = new Database();
+ cardcolor = Color.parseColor(db.getGroup(data.get(i).getGroup_id(), data.get(i).getSl_id()).getColor());
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ colorBox.setBackgroundColor(cardcolor);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ */
+
itemName.setText(data.get(i).getName());
itemAnzahl.setText(data.get(i).getCount());
Picasso.get().load(R.drawable.delete).into(itemDel);
- /*
- itemName.setOnClickListener(new View.OnClickListener() {
+
+ itemCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- onItemEditClick.onItemEditClicked(data.get(i).getItem_id(), data.get(i).getGroup_id(), data.get(i).getSl_id(), itemName.getText().toString(), Integer.parseInt(itemAnzahl.getText().toString()));
+ onItemEditClick.onItemEditClicked(data.get(i).getItem_id(), data.get(i).getGroup_id(), data.get(i).getSl_id(), v);
}
});
@@ -74,19 +104,19 @@ public class ItemAdapter extends RecyclerView.Adapter
onItemDelClicked.onItemDelClicked(data.get(i).getItem_id(), data.get(i).getGroup_id(), data.get(i).getSl_id());
}
});
-*/
+
}
public interface OnItemDelClicked {
void onItemDelClicked(String item_id, String group_id, String sl_id);
}
- public void setItemDelClick(OnItemDelClicked onItemDelClicked){
+ public void setItemDelClick(OnItemDelClicked onItemDelClicked) {
this.onItemDelClicked = onItemDelClicked;
}
public interface OnItemEditClicked {
- void onItemEditClicked(String item_id, String group_id, String sl_id, String newname, int newcount);
+ void onItemEditClicked(String item_id, String group_id, String sl_id, View v);
}
public void setOnItemEditClick(OnItemEditClicked onItemEditClick) {
@@ -106,6 +136,8 @@ public class ItemAdapter extends RecyclerView.Adapter
TextView itemName, itemAnzahl;
ImageView itemDel;
CheckBox erledigtItem;
+ CardView itemCardView;
+ //View colorBox;
public MyViewHolder(View itemView) {
super(itemView);
@@ -114,6 +146,8 @@ public class ItemAdapter extends RecyclerView.Adapter
this.itemAnzahl = (TextView) itemView.findViewById(R.id.anzahlItem);
this.itemDel = (ImageView) itemView.findViewById(R.id.itemDel);
this.erledigtItem = (CheckBox) itemView.findViewById(R.id.erledigtItem);
+ this.itemCardView = (CardView) itemView.findViewById(R.id.itemCardView);
+ //this.colorBox = (View) itemView.findViewById(R.id.itemListColorView);
}
}
}
diff --git a/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/item/ItemShoppinglistDetailsAdapter.java b/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/item/ItemShoppinglistDetailsAdapter.java
new file mode 100644
index 0000000..5bdd3fe
--- /dev/null
+++ b/app/src/main/java/at/smartshopper/smartshopper/shoppinglist/details/item/ItemShoppinglistDetailsAdapter.java
@@ -0,0 +1,112 @@
+package at.smartshopper.smartshopper.shoppinglist.details.item;
+
+import android.support.annotation.NonNull;
+import android.support.v7.widget.CardView;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
+
+import org.json.JSONException;
+
+import java.sql.SQLException;
+import java.util.List;
+
+
+import at.smartshopper.smartshopper.R;
+import at.smartshopper.smartshopper.db.Database;
+
+public class ItemShoppinglistDetailsAdapter extends RecyclerView.Adapter {
+
+ private List data;
+ private OnItemEditClicked onItemEditClick;
+
+ public ItemShoppinglistDetailsAdapter(List data) {
+ this.data = data;
+ }
+
+
+ /**
+ * Erstellt einen Neuen view holder mit aktueller view
+ *
+ * @param viewGroup
+ * @param i
+ * @return
+ */
+ @NonNull
+ @Override
+ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+ View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardviewitemshoppinglistdetails, viewGroup, false);
+
+ MyViewHolder myViewHolder = new MyViewHolder(view);
+ return myViewHolder;
+ }
+
+ /**
+ * Setzt alle Daten in die View elemente
+ *
+ * @param myViewHolder Das View Holder Objekt mit allen elementen
+ * @param i Der Index welcher aus der data list genommen werden soll
+ */
+ @Override
+ public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
+ final TextView itemName = myViewHolder.itemName;
+ TextView itemAnzahl = myViewHolder.itemAnzahl;
+ CheckBox itemErledigt = myViewHolder.erledigtItem;
+ CardView itemCardView = myViewHolder.itemCardView;
+
+ itemCardView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ try {
+ onItemEditClick.onItemEditClicked(data.get(i).getItem_id(), data.get(i).getGroup_id(), data.get(i).getSl_id(), new Database().getGroup(data.get(i).getGroup_id(), data.get(i).getSl_id()).getGroupName(), v);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+
+ itemName.setText(data.get(i).getName());
+ itemAnzahl.setText(data.get(i).getCount());
+ }
+
+
+ public interface OnItemEditClicked {
+ void onItemEditClicked(String item_id, String group_id, String sl_id, String groupName, View v);
+ }
+
+ public void setOnItemEditClick(OnItemEditClicked onItemEditClick) {
+ this.onItemEditClick = onItemEditClick;
+ }
+
+ @Override
+ public int getItemCount() {
+ return data.size();
+ }
+
+ /**
+ * Haltet alle elemente. Durch ein Objekt von dem kann jedes Element welches hier drinnen angeführt ist verwendet werden
+ */
+ public static class MyViewHolder extends RecyclerView.ViewHolder {
+
+ TextView itemName, itemAnzahl;
+ CheckBox erledigtItem;
+ CardView itemCardView;
+
+ public MyViewHolder(View itemView) {
+ super(itemView);
+
+ this.itemName = (TextView) itemView.findViewById(R.id.nameItem);
+ this.itemAnzahl = (TextView) itemView.findViewById(R.id.anzahlItem);
+ this.erledigtItem = (CheckBox) itemView.findViewById(R.id.erledigtItem);
+ this.itemCardView = (CardView) itemView.findViewById(R.id.itemCardView);
+ }
+ }
+}
diff --git a/app/src/main/res/layout/activity_item_list.xml b/app/src/main/res/layout/activity_item_list.xml
index 16be527..3545944 100644
--- a/app/src/main/res/layout/activity_item_list.xml
+++ b/app/src/main/res/layout/activity_item_list.xml
@@ -6,78 +6,114 @@
android:layout_height="match_parent"
tools:context=".activitys.ItemListActivity">
-
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.0">
-
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="8dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
-
+ android:layout_height="wrap_content" >
-
-
-
-
-
-
-
+ android:orientation="vertical">
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shoppinglist_details.xml b/app/src/main/res/layout/activity_shoppinglist_details.xml
index 51ae27d..7ed1286 100644
--- a/app/src/main/res/layout/activity_shoppinglist_details.xml
+++ b/app/src/main/res/layout/activity_shoppinglist_details.xml
@@ -6,12 +6,28 @@
android:layout_height="match_parent"
tools:context=".activitys.ShoppinglistDetails">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/add_group_dialog.xml b/app/src/main/res/layout/add_group_dialog.xml
index 4cb3a46..65f2deb 100644
--- a/app/src/main/res/layout/add_group_dialog.xml
+++ b/app/src/main/res/layout/add_group_dialog.xml
@@ -41,7 +41,7 @@
android:orientation="vertical">
@@ -90,17 +88,6 @@
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/bearbeiten" />
-
-
-
+
-
-
-
-
-
-
-
-
+ android:textAlignment="viewStart"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/cardviewitemshoppinglistdetails.xml b/app/src/main/res/layout/cardviewitemshoppinglistdetails.xml
new file mode 100644
index 0000000..54bdb92
--- /dev/null
+++ b/app/src/main/res/layout/cardviewitemshoppinglistdetails.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+