From dcf53816a5eef53bb956c45b89c6708c00c8576b Mon Sep 17 00:00:00 2001 From: jannis Date: Thu, 15 Aug 2019 16:12:15 +0200 Subject: [PATCH] ListWorkoutActivity --- app/src/main/AndroidManifest.xml | 3 +- .../de/tadris/fitness/LauncherActivity.java | 3 ++ .../tadris/fitness/ListWorkoutsActivity.java | 10 ++-- .../tadris/fitness/RecordWorkoutActivity.java | 19 +++++++ .../de/tadris/fitness/WorkoutAdapter.java | 54 ++++++++++++++++++- .../java/de/tadris/fitness/data/Workout.java | 4 ++ .../de/tadris/fitness/util/UnitUtils.java | 20 +++++++ .../res/layout/activity_record_workout.xml | 9 ++++ app/src/main/res/layout/view_workout.xml | 35 +++++++++++- app/src/main/res/menu/list_workout_menu.xml | 7 +++ app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 1 + 12 files changed, 159 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/de/tadris/fitness/RecordWorkoutActivity.java create mode 100644 app/src/main/java/de/tadris/fitness/util/UnitUtils.java create mode 100644 app/src/main/res/layout/activity_record_workout.xml create mode 100644 app/src/main/res/menu/list_workout_menu.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 38bc56b..a67c4e9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + diff --git a/app/src/main/java/de/tadris/fitness/LauncherActivity.java b/app/src/main/java/de/tadris/fitness/LauncherActivity.java index 4555857..973c424 100644 --- a/app/src/main/java/de/tadris/fitness/LauncherActivity.java +++ b/app/src/main/java/de/tadris/fitness/LauncherActivity.java @@ -20,6 +20,7 @@ package de.tadris.fitness; import android.app.Activity; +import android.content.Intent; import android.os.Bundle; public class LauncherActivity extends Activity { @@ -28,5 +29,7 @@ public class LauncherActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + startActivity(new Intent(this, ListWorkoutsActivity.class)); } } diff --git a/app/src/main/java/de/tadris/fitness/ListWorkoutsActivity.java b/app/src/main/java/de/tadris/fitness/ListWorkoutsActivity.java index 3e8d071..79e3779 100644 --- a/app/src/main/java/de/tadris/fitness/ListWorkoutsActivity.java +++ b/app/src/main/java/de/tadris/fitness/ListWorkoutsActivity.java @@ -31,7 +31,7 @@ import java.util.List; import de.tadris.fitness.data.Workout; -public class ListWorkoutsActivity extends Activity { +public class ListWorkoutsActivity extends Activity implements WorkoutAdapter.WorkoutAdapterListener { private RecyclerView listView; private RecyclerView.Adapter mAdapter; @@ -50,8 +50,12 @@ public class ListWorkoutsActivity extends Activity { layoutManager= new LinearLayoutManager(this); listView.setLayoutManager(layoutManager); - Instance.getInstance(this).db.workoutDao().getWorkouts(); - listView.setAdapter(new WorkoutAdapter()); + workouts= Instance.getInstance(this).db.workoutDao().getWorkouts(); + listView.setAdapter(new WorkoutAdapter(workouts, this)); } + @Override + public void onItemClick(Workout workout) { + // TODO: open detail View + } } diff --git a/app/src/main/java/de/tadris/fitness/RecordWorkoutActivity.java b/app/src/main/java/de/tadris/fitness/RecordWorkoutActivity.java new file mode 100644 index 0000000..643eb1b --- /dev/null +++ b/app/src/main/java/de/tadris/fitness/RecordWorkoutActivity.java @@ -0,0 +1,19 @@ +package de.tadris.fitness; + +import android.app.Activity; +import android.os.Bundle; + +public class RecordWorkoutActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_record_workout); + } + + + + void onMenuCreate(){ + + } +} diff --git a/app/src/main/java/de/tadris/fitness/WorkoutAdapter.java b/app/src/main/java/de/tadris/fitness/WorkoutAdapter.java index b916290..6a8dfee 100644 --- a/app/src/main/java/de/tadris/fitness/WorkoutAdapter.java +++ b/app/src/main/java/de/tadris/fitness/WorkoutAdapter.java @@ -1,17 +1,69 @@ package de.tadris.fitness; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -public class WorkoutAdapter { +import de.tadris.fitness.data.Workout; +import de.tadris.fitness.util.UnitUtils; + +public class WorkoutAdapter extends RecyclerView.Adapter{ public static class WorkoutViewHolder extends RecyclerView.ViewHolder{ + + View root; + TextView lengthText, timeText; + public WorkoutViewHolder(@NonNull View itemView) { super(itemView); + this.root= itemView; + lengthText= itemView.findViewById(R.id.workoutLength); + timeText= itemView.findViewById(R.id.workoutTime); } } + Workout[] workouts; + WorkoutAdapterListener listener; + + public WorkoutAdapter(Workout[] workouts, WorkoutAdapterListener listener) { + this.workouts = workouts; + this.listener = listener; + } + + @Override + public WorkoutAdapter.WorkoutViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_workout, parent, false); + return new WorkoutViewHolder(v); + } + + // Replace the contents of a view (invoked by the layout manager) + @Override + public void onBindViewHolder(WorkoutViewHolder holder, final int position) { + holder.lengthText.setText(workouts[position].length + "km"); + holder.timeText.setText(UnitUtils.getHourMinuteTime(workouts[position].getTime())); + holder.root.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onItemClick(workouts[position]); + } + }); + } + + // Return the size of your dataset (invoked by the layout manager) + @Override + public int getItemCount() { + return workouts.length; + } + + interface WorkoutAdapterListener{ + void onItemClick(Workout workout); + } + + } diff --git a/app/src/main/java/de/tadris/fitness/data/Workout.java b/app/src/main/java/de/tadris/fitness/data/Workout.java index ff2f806..e48696f 100644 --- a/app/src/main/java/de/tadris/fitness/data/Workout.java +++ b/app/src/main/java/de/tadris/fitness/data/Workout.java @@ -38,5 +38,9 @@ public class Workout{ public double avgPace; public String workoutType; + public long getTime(){ + return end - start; + } + } \ No newline at end of file diff --git a/app/src/main/java/de/tadris/fitness/util/UnitUtils.java b/app/src/main/java/de/tadris/fitness/util/UnitUtils.java new file mode 100644 index 0000000..fca11bf --- /dev/null +++ b/app/src/main/java/de/tadris/fitness/util/UnitUtils.java @@ -0,0 +1,20 @@ +package de.tadris.fitness.util; + +import android.content.Context; + +public class UnitUtils { + + public static String getHourMinuteTime(long time){ + long seks= time / 1000; + long mins= seks / 60; + int hours= (int)mins / 60; + int remainingMinutes= (int)mins % 60; + + if(hours > 0){ + return hours + "h " + remainingMinutes + "m"; + }else{ + return remainingMinutes + "min"; + } + } + +} diff --git a/app/src/main/res/layout/activity_record_workout.xml b/app/src/main/res/layout/activity_record_workout.xml new file mode 100644 index 0000000..f7e2426 --- /dev/null +++ b/app/src/main/res/layout/activity_record_workout.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_workout.xml b/app/src/main/res/layout/view_workout.xml index dc6ed08..d4675ae 100644 --- a/app/src/main/res/layout/view_workout.xml +++ b/app/src/main/res/layout/view_workout.xml @@ -1,3 +1,34 @@ - \ No newline at end of file + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/list_workout_menu.xml b/app/src/main/res/menu/list_workout_menu.xml new file mode 100644 index 0000000..5ff6595 --- /dev/null +++ b/app/src/main/res/menu/list_workout_menu.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 69b2233..ef5e1fc 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,4 +3,5 @@ #008577 #00574B #D81B60 + #C8000000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 25d13d7..55b358c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ FitoTrack + Add