Ejemplo n.º 1
0
            public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
            {
                ExerciseListViewHolder viewHolder = holder as ExerciseListViewHolder;

                //set exercise name
                viewHolder.txtName.Text = exercises[position].name;

                //set value for reps and sets
                viewHolder.txtSets.Text = "Sets: " + exercises[position].sets;
                viewHolder.txtReps.Text = "Reps: " + exercises[position].reps;

                //check value for equipment, if weight is empty get rid of the lbs
                if (exercises[position].weight == "N/A")
                {
                    viewHolder.txtWeight.Text = "Weight: " + exercises[position].weight;
                }
                else
                {
                    viewHolder.txtWeight.Text = "Weight: " + exercises[position].weight + " lbs";
                }

                //set value for target area
                viewHolder.txtEquipment.Text = "Equipment: " + exercises[position].equipment;

                //Comparing position to see if the hidden layout needs
                //to be shown or hidden
                if (position == expandedPosition)
                {
                    viewHolder.expandLayout.Visibility = ViewStates.Visible;
                }
                else
                {
                    viewHolder.expandLayout.Visibility = ViewStates.Gone;
                }
            }
Ejemplo n.º 2
0
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            var inflater = LayoutInflater.From(parent.Context);
            var view     = inflater.Inflate(Resource.Layout.ExerciseListItem, parent, false);
            var exerciseListViewHolder = new ExerciseListViewHolder(view);

            exerciseListViewHolder.DeleteExerciseClicked += (sender, i) => DeleteExerciseClicked?.Invoke(sender, _exerciseList[i].Id);
            exerciseListViewHolder.EditExerciseClicked   += (sender, i) => EditExerciseClicked?.Invoke(sender, _exerciseList[i].Id);
            exerciseListViewHolder.EnableDisableClicked  += (sender, i) => EnableDisableClicked?.Invoke(sender, _exerciseList[i].Id);
            return(exerciseListViewHolder);
        }
Ejemplo n.º 3
0
            public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
            {
                View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.ExerciseRow, parent, false);
                // View deleteView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.DeleteItem, null);
                //View editView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.EditExerciseDialog, null);
                ExerciseListViewHolder viewHolder = new ExerciseListViewHolder(itemView, OnClick);

                //click event for delete
                viewHolder.deleteButton.Click += (sender, e) =>
                {
                    var pos          = viewHolder.AdapterPosition;;
                    var exerciseName = exercises[pos].name;

                    //make popup menu for confirmation of deleting from database
                    View deleteView             = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.DeleteItem, null);
                    AlertDialog.Builder builder = new AlertDialog.Builder(parent.Context);
                    builder.SetView(deleteView);
                    AlertDialog alertDialog = builder.Create();

                    Button   deleteButton = deleteView.FindViewById <Button>(Resource.Id.btnDelete);
                    Button   cancelButton = deleteView.FindViewById <Button>(Resource.Id.btnCancel);
                    TextView txtTitle     = deleteView.FindViewById <TextView>(Resource.Id.titleDelete);
                    txtTitle.Text = "Remove exercise from playlist?";

                    deleteButton.Click += delegate
                    {
                        dataBase.removeExerciseFromPlaylist(playlistName, exerciseName);
                        Toast.MakeText(parent.Context, exerciseName + " removed", ToastLength.Short).Show();
                        exercises.RemoveAt(pos);
                        NotifyDataSetChanged();
                        alertDialog.Dismiss();
                    };
                    cancelButton.Click += delegate
                    {
                        //close window
                        alertDialog.Dismiss();
                    };
                    alertDialog.Show();
                };

                //click event for edit
                viewHolder.editButton.Click += (sender, e) =>
                {
                    var  pos          = viewHolder.AdapterPosition;;
                    var  exerciseName = exercises[pos].name;
                    View editView     = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.EditExerciseDialog, null);

                    AlertDialog.Builder builder = new AlertDialog.Builder(parent.Context);
                    builder.SetView(editView);
                    AlertDialog alertDialog = builder.Create();

                    Button   okButton      = editView.FindViewById <Button>(Resource.Id.btnCreate);
                    Button   cancelButton  = editView.FindViewById <Button>(Resource.Id.btnCancel);
                    EditText txtName       = editView.FindViewById <EditText>(Resource.Id.txtExerciseName);
                    EditText txtSets       = editView.FindViewById <EditText>(Resource.Id.txtSets);
                    EditText txtReps       = editView.FindViewById <EditText>(Resource.Id.txtReps);
                    EditText txtWeight     = editView.FindViewById <EditText>(Resource.Id.txtWeight);
                    EditText txtEquipment  = editView.FindViewById <EditText>(Resource.Id.txtEquipment);
                    EditText txtTargetArea = editView.FindViewById <EditText>(Resource.Id.txtTargetArea);

                    //Put current values of the exercise in the dialog so its easy to see
                    //what they are when the user is editing the exercise
                    //if they have a value of N/A leave them blank so the text hint shows
                    txtName.Text = exercises[pos].name;
                    if (exercises[pos].sets != "0")
                    {
                        txtSets.Text = exercises[pos].sets.ToString();
                    }
                    if (exercises[pos].reps != "0")
                    {
                        txtReps.Text = exercises[pos].reps.ToString();
                    }
                    if (exercises[pos].weight != "N/A")
                    {
                        txtWeight.Text = exercises[pos].weight;
                    }
                    if (exercises[pos].equipment != "N/A")
                    {
                        txtEquipment.Text = exercises[pos].equipment;
                    }
                    if (exercises[pos].targetArea != "N/A")
                    {
                        txtTargetArea.Text = exercises[pos].targetArea;
                    }

                    okButton.Click += delegate
                    {
                        //Need a valid name, the rest can be 0 or N/A
                        if (string.IsNullOrEmpty(txtName.Text))
                        {
                            Toast.MakeText(parent.Context, "Please enter a valid name.", ToastLength.Short).Show();
                        }
                        if (string.IsNullOrEmpty(txtSets.Text))
                        {
                            txtSets.Text = "0";
                        }
                        if (string.IsNullOrEmpty(txtReps.Text))
                        {
                            txtReps.Text = "0";
                        }
                        if (string.IsNullOrEmpty(txtWeight.Text))
                        {
                            txtWeight.Text = "N/A";
                        }
                        if (string.IsNullOrEmpty(txtEquipment.Text))
                        {
                            txtEquipment.Text = "N/A";
                        }
                        if (string.IsNullOrEmpty(txtTargetArea.Text))
                        {
                            txtTargetArea.Text = "N/A";
                        }



                        if (dataBase.updateExercise(exerciseName, txtName.Text, txtSets.Text, txtReps.Text, txtWeight.Text, txtTargetArea.Text, txtEquipment.Text))
                        {
                            Toast.MakeText(parent.Context, "Exercise updated.", ToastLength.Short).Show();

                            //update exercise in recyclerview list to add to the recyclerview list

                            exercises[pos].name       = txtName.Text;
                            exercises[pos].sets       = txtSets.Text;
                            exercises[pos].reps       = txtReps.Text;
                            exercises[pos].weight     = txtWeight.Text;
                            exercises[pos].targetArea = txtTargetArea.Text;
                            exercises[pos].equipment  = txtEquipment.Text;

                            NotifyDataSetChanged();
                            alertDialog.Dismiss();
                        }
                        else
                        {
                            Toast.MakeText(parent.Context, "Name is taken.", ToastLength.Short).Show();
                        }
                    };
                    cancelButton.Click += delegate
                    {
                        alertDialog.Dismiss();
                    };
                    alertDialog.Show();
                };

                //click event for search
                //this will open the youtube app for the user to search
                //for the exercise they clicked on
                viewHolder.searchButton.Click += (sender, e) =>
                {
                    var     pos     = viewHolder.AdapterPosition;
                    var     name    = exercises[pos].name;
                    Context context = parent.Context;

                    //start new intent that will open the youtube app
                    //and display search results for specific exercise
                    Intent intent = new Intent(Intent.ActionSearch);
                    intent.SetPackage("com.google.android.youtube");
                    intent.PutExtra("query", name + " how to");
                    intent.SetFlags(ActivityFlags.NewTask);
                    context.StartActivity(intent);
                };
                return(viewHolder);
            }