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 @@ + + + + + + + + + + + + + +