Advertisement
sigrundish

Untitled

Apr 26th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.83 KB | None | 0 0
  1. package com.example.sigrundish.actio;
  2.  
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.v4.app.Fragment;
  6. import android.support.v7.widget.LinearLayoutManager;
  7. import android.support.v7.widget.RecyclerView;
  8. import android.text.Editable;
  9. import android.text.TextWatcher;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. import com.android.volley.Request;
  19. import com.android.volley.RequestQueue;
  20. import com.android.volley.Response;
  21. import com.android.volley.VolleyError;
  22. import com.android.volley.toolbox.JsonObjectRequest;
  23. import com.android.volley.toolbox.Volley;
  24.  
  25. import org.json.JSONException;
  26. import org.json.JSONObject;
  27.  
  28. import java.text.DateFormat;
  29. import java.text.ParseException;
  30. import java.text.SimpleDateFormat;
  31. import java.util.ArrayList;
  32. import java.util.HashMap;
  33. import java.util.List;
  34.  
  35. /**
  36.  * Created by sigrundish on 25/02/2018.
  37.  */
  38.  
  39. public class ActivityListFragment extends Fragment {
  40.     private RecyclerView mActivityRecyclerView;
  41.     private ActivityAdapter mAdapter;
  42.     private ActivityLab activityLab ;
  43.     private List<Activity> activities = new ArrayList<>();
  44.     private User user = new User();
  45.     String url = "https://actio-server.herokuapp.com/activities";
  46.     Boolean onlyAttended = false;
  47.  
  48.  
  49.     @Override
  50.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  51.                              Bundle savedInstanceState) {
  52.         View view = inflater.inflate(R.layout.fragment_activity_list, container, false);
  53.         EditText etsearchActivity = view.findViewById(R.id.etSearchActivity);
  54.  
  55.         etsearchActivity.clearFocus();
  56.  
  57.         etsearchActivity.addTextChangedListener(new TextWatcher() {
  58.             @Override
  59.             public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  60.  
  61.             }
  62.  
  63.             @Override
  64.             public void onTextChanged(CharSequence s, int i, int i1, int i2) {
  65.                 if(s.length()==0){
  66.                     mAdapter.resetList();
  67.                 }
  68.             }
  69.  
  70.             @Override
  71.             public void afterTextChanged(Editable s) {
  72.                 filter(s.toString());
  73.             }
  74.         });
  75.         mActivityRecyclerView = (RecyclerView) view.findViewById(R.id.activity_recycler_view);
  76.         mActivityRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
  77.         user = (User)getActivity().getIntent().getSerializableExtra("user");
  78.         onlyAttended = Boolean.valueOf(getActivity().getIntent().getStringExtra("ONLY_ATTENDED"));
  79.         updateUI();
  80.         return view;
  81.     }
  82.     private void filter(String text1){
  83.         ArrayList<Activity> filteredList = new ArrayList<>();
  84.  
  85.         for (Activity item : activities) {
  86.             if (item.getTitle().toLowerCase().contains(text1.toLowerCase())) {
  87.                 filteredList.add(item);
  88.  
  89.             }
  90.             else if(item.getLocation().toLowerCase().contains(text1.toLowerCase())){
  91.                 filteredList.add(item);
  92.             }
  93.         }
  94.  
  95.         mAdapter.filterList(filteredList);
  96.     }
  97.  
  98.  
  99.     private void updateUI() {
  100.         if(onlyAttended){
  101.             //Request what activities the user has attended to.
  102.             int userId = user.getId();
  103.             url = "https://actio-server.herokuapp.com/usersAttendingActivity/" + userId;
  104.         }
  105.         setActivities();
  106.  
  107.     }
  108.  
  109.     private void setActivities(){
  110.  
  111.         RequestQueue queue = Volley.newRequestQueue(getActivity());
  112.         activityLab = ActivityLab.get(getActivity());
  113.  
  114.         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null,
  115.                 new Response.Listener<JSONObject>() {
  116.                     @Override
  117.                     public void onResponse(JSONObject response) {
  118.                         try {
  119.                             activities = activityLab.jsonArrayToActivityList(response.getJSONArray("data"));
  120.                             mAdapter = new ActivityAdapter(activities);
  121.                             mActivityRecyclerView.setAdapter(mAdapter);
  122.  
  123.                         } catch (JSONException e) {
  124.                             e.printStackTrace();
  125.                         } catch (ParseException e) {
  126.                             e.printStackTrace();
  127.                         }
  128.                     }
  129.                 }, new Response.ErrorListener() {
  130.             @Override
  131.             public void onErrorResponse(VolleyError error) {
  132.                 // DisplayText.setText("That didn't work!");
  133.             }
  134.         });
  135.         queue.add(jsonObjectRequest);
  136.  
  137.     }
  138.  
  139.     private TextView mTitleTextView;
  140.     private TextView mDescriptionTextView;
  141.     private TextView mLocationTextView;
  142.     private Button bAttend;
  143.     private Button bActivityInfo;
  144.  
  145.  
  146.     private class ActivityHolder extends RecyclerView.ViewHolder
  147.          {
  148.         private Activity mActivity;
  149.  
  150.         // itemView er public breyta í RecyclerView.ViewHolder
  151.  
  152.         public ActivityHolder (LayoutInflater inflater, ViewGroup parent) {
  153.             super(inflater.inflate(R.layout.list_item_activity, parent, false));
  154.  
  155.             mTitleTextView = (TextView) itemView.findViewById(R.id.activity_title);
  156.             mDescriptionTextView = (TextView) itemView.findViewById(R.id.activity_description);
  157.             mLocationTextView = (TextView) itemView.findViewById(R.id.activity_location);
  158.             bAttend = (Button) itemView.findViewById(R.id.bAttend);
  159.             bAttend.setOnClickListener(new View.OnClickListener() {
  160.                 public void onClick(View view) {
  161.                     if(!onlyAttended){
  162.                         letUserAttendActivity();
  163.                         Toast.makeText(getActivity(),
  164.                                 "You are now attending " + mActivity.getTitle()+"!",Toast.LENGTH_SHORT)
  165.                                 .show();
  166.                     }
  167.                     else{
  168.                         letUserUnAttendActivity();
  169.                         Toast.makeText(getActivity(),
  170.                                 "You are no longer attending " + mActivity.getTitle()+"!",Toast.LENGTH_SHORT)
  171.                                 .show();
  172.                     }
  173.  
  174.                 }
  175.             });
  176.             bActivityInfo = (Button) itemView.findViewById(R.id.bActivityInfo);
  177.             bActivityInfo.setOnClickListener(new View.OnClickListener() {
  178.                 public void onClick(View view) {
  179.                     Intent infoIntent = new Intent(getActivity(), ActivityInfoActivity.class);
  180.                     infoIntent.putExtra("Title", mActivity.getTitle());
  181.                     infoIntent.putExtra("Description", mActivity.getDescription());
  182.                     infoIntent.putExtra("Location", mActivity.getLocation());
  183.                     infoIntent.putExtra("id", String.valueOf(mActivity.getId()));
  184.                     DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  185.  
  186.                     infoIntent.putExtra("startTime",df.format(mActivity.getStartTime()));
  187.                     infoIntent.putExtra("endTime", df.format(mActivity.getEndTime()));
  188.                     ActivityListFragment.this.startActivity(infoIntent);
  189.  
  190.                 }
  191.             });
  192.  
  193.         }
  194.         public void bind (Activity activity) {
  195.             mActivity = activity;
  196.             mTitleTextView.setText(mActivity.getTitle());
  197.             mDescriptionTextView.setText(mActivity.getDescription());
  198.             mLocationTextView.setText(mActivity.getLocation());
  199.             if(onlyAttended){
  200.                 bAttend.setText("Not going");
  201.             }
  202.             else{
  203.                 bAttend.setText("Attend");
  204.             }
  205.  
  206.         }
  207.  
  208.         private void letUserAttendActivity(){
  209.             String url = "https://actio-server.herokuapp.com/usersattendingactivity";
  210.             RequestQueue queue = Volley.newRequestQueue(getActivity());
  211.             // Inserts userId and activityId into the usersattendingactivity table.
  212.             queue.start();
  213.             HashMap<String, String> params = new HashMap<String,String>();
  214.             params.put("userId", String.valueOf(user.getId())); // the entered data as the body.
  215.             params.put("activityId", String.valueOf(mActivity.getId())); // the entered data as the body.
  216.             JsonObjectRequest jsObjRequest = new
  217.                     JsonObjectRequest(Request.Method.POST,
  218.                     url,
  219.                     new JSONObject(params),
  220.                     new Response.Listener<JSONObject>() {
  221.                         @Override
  222.                         public void onResponse(JSONObject response) {
  223.                             // DisplayText.setText(response.getString("message"));
  224.                         }
  225.                     }, new Response.ErrorListener() {
  226.                 @Override
  227.                 public void onErrorResponse(VolleyError error) {
  228.                     // DisplayText.setText("That didn't work!");
  229.                 }
  230.             });
  231.             queue.add(jsObjRequest);
  232.         }
  233.  
  234.         private void letUserUnAttendActivity(){
  235.             String userId = String.valueOf(user.getId());
  236.             String activityId = String.valueOf(mActivity.getId());
  237.             String url = "https://actio-server.herokuapp.com/usersattendingactivity/" + userId + "&" + activityId;
  238.             RequestQueue queue = Volley.newRequestQueue(getActivity());
  239.             // Inserts userId and activityId into the usersattendingactivity table.
  240.             queue.start();
  241.             HashMap<String, String> params = new HashMap<String,String>();
  242.             params.put("userId", userId); // the entered data as the body.
  243.             params.put("activityId",activityId); // the entered data as the body.
  244.             JsonObjectRequest jsObjRequest = new
  245.                     JsonObjectRequest(Request.Method.DELETE,
  246.                     url,
  247.                     new JSONObject(params),
  248.                     new Response.Listener<JSONObject>() {
  249.                         @Override
  250.                         public void onResponse(JSONObject response) {
  251.                             // DisplayText.setText(response.getString("message"));
  252.                             updateUI();
  253.                         }
  254.                     }, new Response.ErrorListener() {
  255.                 @Override
  256.                 public void onErrorResponse(VolleyError error) {
  257.                     // DisplayText.setText("That didn't work!");
  258.                 }
  259.             });
  260.             queue.add(jsObjRequest);
  261.         }
  262.  
  263.     }
  264.     private class ActivityAdapter extends RecyclerView.Adapter<ActivityHolder> {
  265.         private List<Activity> mActivities;
  266.         private List<Activity> mActivitiesOriginal;
  267.         public ActivityAdapter(List<Activity> activities) {
  268.             mActivities = activities;
  269.             mActivitiesOriginal = activities;
  270.         }
  271.         @Override
  272.         public ActivityHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  273.             LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
  274.             return new ActivityHolder(layoutInflater, parent);
  275.         }
  276.  
  277.         @Override
  278.         public void onBindViewHolder ( ActivityHolder holder,  int position) {
  279.             Activity activity = mActivities.get(position);
  280.             holder.bind(activity);
  281.             holder.setIsRecyclable(false);
  282.         }
  283.         @Override
  284.         public int getItemCount() {
  285.             return mActivities.size();
  286.         }
  287.  
  288.         public void filterList(ArrayList<Activity> filteredList) {
  289.             mActivities = filteredList;
  290.             notifyDataSetChanged();
  291.         }
  292.         public void resetList(){
  293.             mActivities = mActivitiesOriginal;
  294.             notifyDataSetChanged();
  295.         }
  296.     }
  297. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement