From 3de53be8479b94dfcc02eeead2c7d057e74408a2 Mon Sep 17 00:00:00 2001 From: Clayton Wilson Date: Sun, 15 Nov 2020 00:21:38 -0500 Subject: [PATCH] Drag to refresh lists activity --- .../listify/CreateListAddDialogFragment.java | 10 ++++- .../example/listify/ui/home/HomeFragment.java | 40 +++++++++++++------ .../res/layout/dialog_create_list_add.xml | 1 + .../app/src/main/res/layout/fragment_home.xml | 16 +++++--- 4 files changed, 49 insertions(+), 18 deletions(-) diff --git a/Listify/app/src/main/java/com/example/listify/CreateListAddDialogFragment.java b/Listify/app/src/main/java/com/example/listify/CreateListAddDialogFragment.java index 4d93360..9b8e470 100644 --- a/Listify/app/src/main/java/com/example/listify/CreateListAddDialogFragment.java +++ b/Listify/app/src/main/java/com/example/listify/CreateListAddDialogFragment.java @@ -62,8 +62,12 @@ public class CreateListAddDialogFragment extends DialogFragment { btnMinus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + if (etQuantity.getText().toString().equals("")) { + etQuantity.setText("1"); + } + int curQauntity = Integer.parseInt(etQuantity.getText().toString()); - if (curQauntity > 0) { + if (curQauntity > 1) { curQauntity--; etQuantity.setText(String.format("%d", curQauntity)); } @@ -74,6 +78,10 @@ public class CreateListAddDialogFragment extends DialogFragment { btnPlus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + if (etQuantity.getText().toString().equals("")) { + etQuantity.setText("1"); + } + int curQauntity = Integer.parseInt(etQuantity.getText().toString()); curQauntity++; etQuantity.setText(String.format("%d", curQauntity)); diff --git a/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java b/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java index bd44ea3..b9cfc49 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java +++ b/Listify/app/src/main/java/com/example/listify/ui/home/HomeFragment.java @@ -6,11 +6,14 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.ProgressBar; +import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + import com.example.listify.AuthManager; import com.example.listify.CreateListDialogFragment; import com.example.listify.LoadingCircleDialog; @@ -37,6 +40,7 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O ListView shoppingListsView; ProgressBar loadingLists; TextView emptyMessage; + SwipeRefreshLayout refreshLists; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_home, container, false); @@ -44,6 +48,7 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O loadingLists = (ProgressBar) root.findViewById(R.id.progress_loading_lists); loadingLists.setVisibility(View.VISIBLE); emptyMessage = (TextView) root.findViewById(R.id.textViewEmpty); + refreshLists = (SwipeRefreshLayout) root.findViewById(R.id.refresh_lists); Properties configs = new Properties(); try { @@ -55,8 +60,8 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O requestor = new Requestor(am, configs.getProperty("apiKey")); SynchronousReceiver listIdsReceiver = new SynchronousReceiver<>(); - final Requestor.Receiver recv = this; - requestor.getListOfIds(List.class, recv, null); +// final Requestor.Receiver recv = this; + requestor.getListOfIds(List.class, this, null); FloatingActionButton fab = (FloatingActionButton) root.findViewById(R.id.new_list_fab); @@ -70,6 +75,23 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O } }); + refreshLists.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + Properties configs = new Properties(); + try { + configs = AuthManager.loadProperties(getContext(), "android.resource://" + getActivity().getPackageName() + "/raw/auths.json"); + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + + requestor = new Requestor(am, configs.getProperty("apiKey")); + SynchronousReceiver listIdsReceiver = new SynchronousReceiver<>(); + + requestor.getListOfIds(List.class, HomeFragment.this, null); + } + }); + return root; } @@ -130,6 +152,9 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O @Override public void acceptDelivery(Object delivered) { + // Remove old lists on refresh + shoppingLists.clear(); + Integer[] listIds = (Integer[]) delivered; // Create threads and add them to a list Thread[] threads = new Thread[listIds.length]; @@ -169,16 +194,6 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O @Override public void run() { shoppingListsView.setAdapter(shoppingListsSwipeableAdapter); -// shoppingListsView.setOnItemClickListener(new AdapterView.OnItemClickListener() { -// @Override -// public void onItemClick(AdapterView parent, View view, int position, long id) { -// Intent listPage = new Intent(getContext(), ListPage.class); -// -// // Send the list ID -// listPage.putExtra("listID", shoppingLists.get(position).getItemID()); -// startActivity(listPage); -// } -// }); loadingLists.setVisibility(View.GONE); if(listIds.length == 0) { @@ -187,5 +202,6 @@ public class HomeFragment extends Fragment implements CreateListDialogFragment.O } }); + refreshLists.setRefreshing(false); } } \ No newline at end of file diff --git a/Listify/app/src/main/res/layout/dialog_create_list_add.xml b/Listify/app/src/main/res/layout/dialog_create_list_add.xml index 301dd2e..7c8accc 100644 --- a/Listify/app/src/main/res/layout/dialog_create_list_add.xml +++ b/Listify/app/src/main/res/layout/dialog_create_list_add.xml @@ -35,6 +35,7 @@ android:layout_width="60dp" android:layout_height="50dp" android:text="@string/_1" + android:digits="0123456789" android:inputType="number"/>