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; } }
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); }
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); }