1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2025-02-02 21:17:32 +01:00

Make Sports Activities list use Activity List style

This commit is contained in:
vanous 2020-10-17 13:37:32 +02:00
parent 7c374181dc
commit f60ba212c6
10 changed files with 321 additions and 107 deletions

View File

@ -22,13 +22,13 @@ import android.widget.ListView;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.adapter.AbstractItemAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.AbstractActivityListingAdapter;
public abstract class AbstractListActivity<T> extends AbstractGBActivity { public abstract class AbstractListActivity<T> extends AbstractGBActivity {
private AbstractItemAdapter<T> itemAdapter; private AbstractActivityListingAdapter<T> itemAdapter;
private ListView itemListView; private ListView itemListView;
public void setItemAdapter(AbstractItemAdapter<T> itemAdapter) { public void setItemAdapter(AbstractActivityListingAdapter<T> itemAdapter) {
this.itemAdapter = itemAdapter; this.itemAdapter = itemAdapter;
itemListView.setAdapter(itemAdapter); itemListView.setAdapter(itemAdapter);
} }
@ -61,7 +61,7 @@ public abstract class AbstractListActivity<T> extends AbstractGBActivity {
this.itemAdapter.setDeviceFilter(device); this.itemAdapter.setDeviceFilter(device);
} }
public AbstractItemAdapter<T> getItemAdapter() { public AbstractActivityListingAdapter<T> getItemAdapter() {
return itemAdapter; return itemAdapter;
} }

View File

@ -24,6 +24,7 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.util.SparseBooleanArray; import android.util.SparseBooleanArray;
@ -268,6 +269,7 @@ public class ActivitySummariesActivity extends AbstractListActivity<BaseActivity
ActivitySummariesAdapter activitySummariesAdapter = new ActivitySummariesAdapter(this, mGBDevice, activityFilter, dateFromFilter, dateToFilter, nameContainsFilter, deviceFilter, itemsFilter); ActivitySummariesAdapter activitySummariesAdapter = new ActivitySummariesAdapter(this, mGBDevice, activityFilter, dateFromFilter, dateToFilter, nameContainsFilter, deviceFilter, itemsFilter);
int backgroundColor = getBackgroundColor(ActivitySummariesActivity.this); int backgroundColor = getBackgroundColor(ActivitySummariesActivity.this);
activitySummariesAdapter.setBackgroundColor(backgroundColor); activitySummariesAdapter.setBackgroundColor(backgroundColor);
activitySummariesAdapter.setShowTime(false);
setItemAdapter(activitySummariesAdapter); setItemAdapter(activitySummariesAdapter);
getItemListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { getItemListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {

View File

@ -15,15 +15,30 @@ public class ActivityListingAdapter extends AbstractActivityListingAdapter<StepA
super(context); super(context);
} }
@Override
protected String getDateLabel(StepAnalysis.StepSession item) {
return "";
}
@Override
protected boolean hasGPS(StepAnalysis.StepSession item) {
return false;
}
@Override
protected boolean hasDate(StepAnalysis.StepSession item) {
return false;
}
@Override @Override
protected String getTimeFrom(StepAnalysis.StepSession item) { protected String getTimeFrom(StepAnalysis.StepSession item) {
Date time = item.getStepStart(); Date time = item.getStartTime();
return DateTimeUtils.formatTime(time.getHours(), time.getMinutes()); return DateTimeUtils.formatTime(time.getHours(), time.getMinutes());
} }
@Override @Override
protected String getTimeTo(StepAnalysis.StepSession item) { protected String getTimeTo(StepAnalysis.StepSession item) {
Date time = item.getStepEnd(); Date time = item.getEndTime();
return DateTimeUtils.formatTime(time.getHours(), time.getMinutes()); return DateTimeUtils.formatTime(time.getHours(), time.getMinutes());
} }
@ -64,7 +79,7 @@ public class ActivityListingAdapter extends AbstractActivityListingAdapter<StepA
@Override @Override
protected String getDurationLabel(StepAnalysis.StepSession item) { protected String getDurationLabel(StepAnalysis.StepSession item) {
long duration = item.getStepEnd().getTime() - item.getStepStart().getTime(); long duration = item.getEndTime().getTime() - item.getStartTime().getTime();
return DateTimeUtils.formatDurationHoursMinutes(duration, TimeUnit.MILLISECONDS); return DateTimeUtils.formatDurationHoursMinutes(duration, TimeUnit.MILLISECONDS);
} }
@ -95,10 +110,19 @@ public class ActivityListingAdapter extends AbstractActivityListingAdapter<StepA
} }
} }
@Override
protected boolean hasSteps(StepAnalysis.StepSession item) {
if (item.getSteps() > 0) {
return true;
} else {
return false;
}
}
@Override @Override
protected int getIcon(StepAnalysis.StepSession item) { protected int getIcon(StepAnalysis.StepSession item) {
int activityKind = item.getActivityKind(); return ActivityKind.getIconId(item.getActivityKind());
return ActivityKind.getIconId(activityKind);
} }

View File

@ -168,19 +168,19 @@ public class StepAnalysis {
} }
public static class StepSession { public static class StepSession {
private final Date stepStart; private final Date startTime;
private final Date stepEnd; private final Date endTime;
private final int steps; private final int steps;
private final int heartRateAverage; private final int heartRateAverage;
private final float intensity; private final float intensity;
private final float distance; private final float distance;
private final int activityKind; private final int activityKind;
StepSession(Date stepStart, StepSession(Date startTime,
Date stepEnd, Date endTime,
int steps, int heartRateAverage, float intensity, float distance, int activityKind) { int steps, int heartRateAverage, float intensity, float distance, int activityKind) {
this.stepStart = stepStart; this.startTime = startTime;
this.stepEnd = stepEnd; this.endTime = endTime;
this.steps = steps; this.steps = steps;
this.heartRateAverage = heartRateAverage; this.heartRateAverage = heartRateAverage;
this.intensity = intensity; this.intensity = intensity;
@ -188,12 +188,12 @@ public class StepAnalysis {
this.activityKind = activityKind; this.activityKind = activityKind;
} }
public Date getStepStart() { public Date getStartTime() {
return stepStart; return startTime;
} }
public Date getStepEnd() { public Date getEndTime() {
return stepEnd; return endTime;
} }
public int getSteps() { public int getSteps() {

View File

@ -45,6 +45,8 @@ public abstract class AbstractActivityListingAdapter<T> extends ArrayAdapter<T>
private final List<T> items; private final List<T> items;
private int backgroundColor = 0; private int backgroundColor = 0;
private int alternateColor = 0; private int alternateColor = 0;
private boolean zebraStripes = true;
private boolean showTime = true;
public AbstractActivityListingAdapter(Context context) { public AbstractActivityListingAdapter(Context context) {
this(context, new ArrayList<T>()); this(context, new ArrayList<T>());
@ -74,22 +76,28 @@ public abstract class AbstractActivityListingAdapter<T> extends ArrayAdapter<T>
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.activity_list_item, parent, false); view = inflater.inflate(R.layout.activity_list_item, parent, false);
} }
TextView timeFrom = view.findViewById(R.id.line_layout_timeFrom); TextView timeFrom = view.findViewById(R.id.line_layout_time_from);
TextView timeTo = view.findViewById(R.id.line_layout_timeTo); TextView timeTo = view.findViewById(R.id.line_layout_time_to);
TextView activityName = view.findViewById(R.id.line_layout_activityName); TextView activityName = view.findViewById(R.id.line_layout_activity_name);
TextView stepLabel = view.findViewById(R.id.line_layout_step_label); TextView stepLabel = view.findViewById(R.id.line_layout_step_label);
TextView distanceLabel = view.findViewById(R.id.line_layout_distance_label); TextView distanceLabel = view.findViewById(R.id.line_layout_distance_label);
TextView hrLabel = view.findViewById(R.id.line_layout_hr_label); TextView hrLabel = view.findViewById(R.id.line_layout_hr_label);
TextView intensityLabel = view.findViewById(R.id.line_layout_intensity_label); TextView intensityLabel = view.findViewById(R.id.line_layout_intensity_label);
TextView durationLabel = view.findViewById(R.id.line_layout_duration_labe); TextView durationLabel = view.findViewById(R.id.line_layout_duration_label);
TextView dateLabel = view.findViewById(R.id.line_layout_date_label);
LinearLayout timeLayout = view.findViewById(R.id.line_layout_time);
LinearLayout hrLayout = view.findViewById(R.id.line_layout_hr); LinearLayout hrLayout = view.findViewById(R.id.line_layout_hr);
LinearLayout stepsLayout = view.findViewById(R.id.line_layout_step);
LinearLayout distanceLayout = view.findViewById(R.id.line_layout_distance); LinearLayout distanceLayout = view.findViewById(R.id.line_layout_distance);
LinearLayout intensityLayout = view.findViewById(R.id.line_layout_intensity); LinearLayout intensityLayout = view.findViewById(R.id.line_layout_intensity);
LinearLayout dateLayout = view.findViewById(R.id.line_layout_date);
LinearLayout list_item_subparent_layout = view.findViewById(R.id.list_item_subparent_layout);
RelativeLayout parentLayout = view.findViewById(R.id.list_item_parent_layout); RelativeLayout parentLayout = view.findViewById(R.id.list_item_parent_layout);
ImageView activityIcon = view.findViewById(R.id.line_layout_activityIcon); ImageView activityIcon = view.findViewById(R.id.line_layout_activity_icon);
ImageView gpsIcon = view.findViewById(R.id.line_layout_gps_icon);
timeFrom.setText(getTimeFrom(item)); timeFrom.setText(getTimeFrom(item));
timeTo.setText(getTimeTo(item)); timeTo.setText(getTimeTo(item));
@ -99,6 +107,8 @@ public abstract class AbstractActivityListingAdapter<T> extends ArrayAdapter<T>
hrLabel.setText(getHrLabel(item)); hrLabel.setText(getHrLabel(item));
intensityLabel.setText(getIntensityLabel(item)); intensityLabel.setText(getIntensityLabel(item));
durationLabel.setText(getDurationLabel(item)); durationLabel.setText(getDurationLabel(item));
dateLabel.setText(getDateLabel(item));
if (!hasHR(item)) { if (!hasHR(item)) {
hrLayout.setVisibility(View.GONE); hrLayout.setVisibility(View.GONE);
@ -118,15 +128,44 @@ public abstract class AbstractActivityListingAdapter<T> extends ArrayAdapter<T>
distanceLayout.setVisibility(View.VISIBLE); distanceLayout.setVisibility(View.VISIBLE);
} }
if (!hasSteps(item)) {
stepsLayout.setVisibility(View.GONE);
} else {
stepsLayout.setVisibility(View.VISIBLE);
}
if (!hasDate(item)) {
dateLayout.setVisibility(View.GONE);
} else {
dateLayout.setVisibility(View.VISIBLE);
}
if (!showTime) {
timeLayout.setVisibility(View.GONE);
} else {
timeLayout.setVisibility(View.VISIBLE);
}
if (!hasGPS(item)) {
gpsIcon.setVisibility(View.GONE);
} else {
gpsIcon.setVisibility(View.VISIBLE);
}
activityIcon.setImageResource(getIcon(item)); activityIcon.setImageResource(getIcon(item));
if (position % 2 == 0) { if (zebraStripes && position % 2 == 0) {
parentLayout.setBackgroundColor(alternateColor); parentLayout.setBackgroundColor(alternateColor);
} }
return view; return view;
} }
protected abstract String getDateLabel(T item);
protected abstract boolean hasGPS(T item);
protected abstract boolean hasDate(T item);
protected abstract String getTimeFrom(T item); protected abstract String getTimeFrom(T item);
protected abstract String getTimeTo(T item); protected abstract String getTimeTo(T item);
@ -149,6 +188,16 @@ public abstract class AbstractActivityListingAdapter<T> extends ArrayAdapter<T>
protected abstract boolean hasDistance(T item); protected abstract boolean hasDistance(T item);
protected abstract boolean hasSteps(T item);
public void setZebraStripes(boolean enable) {
zebraStripes = enable;
}
public void setShowTime(boolean enable) {
showTime = enable;
}
@DrawableRes @DrawableRes
protected abstract int getIcon(T item); protected abstract int getIcon(T item);
@ -167,4 +216,22 @@ public abstract class AbstractActivityListingAdapter<T> extends ArrayAdapter<T>
} }
} }
public void setActivityKindFilter(int activityKind) {
this.setActivityKindFilter(activityKind);
}
public void setDateFromFilter(long date) {
}
public void setDateToFilter(long date) {
}
public void setNameContainsFilter(String name) {
}
public void setItemsFilter(List items) {
}
public void setDeviceFilter(long device) {
}
} }

View File

@ -61,24 +61,7 @@ public abstract class AbstractItemAdapter<T> extends ArrayAdapter<T> {
this.horizontalAlignment = horizontalAlignment; this.horizontalAlignment = horizontalAlignment;
} }
public void setActivityKindFilter(int activityKind){
this.setActivityKindFilter(activityKind);
}
public void setDateFromFilter(long date){
}
public void setDateToFilter(long date){
}
public void setNameContainsFilter(String name){
}
public void setItemsFilter(List items) {
}
public void setDeviceFilter(long device) {
}
@Override @Override
public View getView(int position, View view, ViewGroup parent) { public View getView(int position, View view, ViewGroup parent) {

View File

@ -40,14 +40,15 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
import static nodomain.freeyourgadget.gadgetbridge.activities.ActivitySummariesFilter.ALL_DEVICES; import static nodomain.freeyourgadget.gadgetbridge.activities.ActivitySummariesFilter.ALL_DEVICES;
public class ActivitySummariesAdapter extends AbstractItemAdapter<BaseActivitySummary> { public class ActivitySummariesAdapter extends AbstractActivityListingAdapter<BaseActivitySummary> {
private final GBDevice device; private final GBDevice device;
private int activityKindFilter; long dateFromFilter = 0;
long dateFromFilter=0; long dateToFilter = 0;
long dateToFilter=0;
long deviceFilter; long deviceFilter;
String nameContainsFilter; String nameContainsFilter;
List<Long>itemsFilter; List<Long> itemsFilter;
private int activityKindFilter;
private int backgroundColor = 0;
public ActivitySummariesAdapter(Context context, GBDevice device, int activityKindFilter, long dateFromFilter, long dateToFilter, String nameContainsFilter, long deviceFilter, List itemsFilter) { public ActivitySummariesAdapter(Context context, GBDevice device, int activityKindFilter, long dateFromFilter, long dateToFilter, String nameContainsFilter, long deviceFilter, List itemsFilter) {
super(context); super(context);
@ -81,24 +82,24 @@ public class ActivitySummariesAdapter extends AbstractItemAdapter<BaseActivitySu
dbDevice.getId())).orderDesc(BaseActivitySummaryDao.Properties.StartTime); dbDevice.getId())).orderDesc(BaseActivitySummaryDao.Properties.StartTime);
} }
if (activityKindFilter !=0) { if (activityKindFilter != 0) {
qb.where( qb.where(
BaseActivitySummaryDao.Properties.ActivityKind.eq(activityKindFilter)); BaseActivitySummaryDao.Properties.ActivityKind.eq(activityKindFilter));
} }
if (dateFromFilter !=0) { if (dateFromFilter != 0) {
qb.where( qb.where(
BaseActivitySummaryDao.Properties.StartTime.gt(new Date(dateFromFilter))); BaseActivitySummaryDao.Properties.StartTime.gt(new Date(dateFromFilter)));
} }
if (dateToFilter !=0) { if (dateToFilter != 0) {
qb.where( qb.where(
BaseActivitySummaryDao.Properties.EndTime.lt(new Date(dateToFilter))); BaseActivitySummaryDao.Properties.EndTime.lt(new Date(dateToFilter)));
} }
if (nameContainsFilter !=null && nameContainsFilter.length() > 0) { if (nameContainsFilter != null && nameContainsFilter.length() > 0) {
qb.where( qb.where(
BaseActivitySummaryDao.Properties.Name.like("%" + nameContainsFilter + "%")); BaseActivitySummaryDao.Properties.Name.like("%" + nameContainsFilter + "%"));
} }
if (itemsFilter !=null) { if (itemsFilter != null) {
qb.where( qb.where(
BaseActivitySummaryDao.Properties.Id.in(itemsFilter)); BaseActivitySummaryDao.Properties.Id.in(itemsFilter));
} }
@ -109,42 +110,36 @@ public class ActivitySummariesAdapter extends AbstractItemAdapter<BaseActivitySu
} }
} }
public void setActivityKindFilter(int filter){ public void setActivityKindFilter(int filter) {
this.activityKindFilter=filter; this.activityKindFilter = filter;
} }
public void setDateFromFilter(long date){
this.dateFromFilter=date;
}
public void setDateToFilter(long date){
this.dateToFilter=date;
}
public void setNameContainsFilter(String name){
this.nameContainsFilter=name;
}
public void setItemsFilter(List items) { this.itemsFilter = items; }
public void setDeviceFilter(long device) { this.deviceFilter = device; }
@Override public void setDateFromFilter(long date) {
protected String getName(BaseActivitySummary item) { this.dateFromFilter = date;
String name = item.getName(); }
if (name == null) name="";
String gpxTrack = item.getGpxTrack(); public void setDateToFilter(long date) {
String hasGps = " "; this.dateToFilter = date;
if (gpxTrack != null) { }
hasGps=" 🛰️ ";
} public void setNameContainsFilter(String name) {
return ActivityKind.asString(item.getActivityKind(), getContext())+ hasGps + name; this.nameContainsFilter = name;
}
public void setItemsFilter(List items) {
this.itemsFilter = items;
}
public void setDeviceFilter(long device) {
this.deviceFilter = device;
} }
@Override @Override
protected String getDetails(BaseActivitySummary item) { protected String getDateLabel(BaseActivitySummary item) {
Date startTime = item.getStartTime(); Date startTime = item.getStartTime();
String separator = ",";
if (startTime != null) { if (startTime != null) {
String activityDay; String activityDay;
String activityTime;
String activityDayTime;
Long duration = item.getEndTime().getTime() - item.getStartTime().getTime();
if (DateUtils.isToday(startTime.getTime())) { if (DateUtils.isToday(startTime.getTime())) {
activityDay = getContext().getString(R.string.activity_summary_today); activityDay = getContext().getString(R.string.activity_summary_today);
@ -153,21 +148,103 @@ public class ActivitySummariesAdapter extends AbstractItemAdapter<BaseActivitySu
} else { } else {
activityDay = DateTimeUtils.formatDate(startTime); activityDay = DateTimeUtils.formatDate(startTime);
} }
Calendar calendar = Calendar.getInstance(); String activityTime = DateTimeUtils.formatTime(startTime.getHours(), startTime.getMinutes());
calendar.setTime(startTime); return String.format("%s%s %s", activityDay, separator, activityTime);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
activityTime = DateTimeUtils.formatTime(hours, minutes);
activityDayTime = String.format("%s, %s", activityDay, activityTime);
return activityDayTime + " (" + DateTimeUtils.formatDurationHoursMinutes(duration, TimeUnit.MILLISECONDS) + ")";
} }
return "Unknown time"; return "Unknown time";
} }
@Override
protected boolean hasGPS(BaseActivitySummary item) {
if (item.getGpxTrack() != null) {
return true;
} else {
return false;
}
}
@Override
protected boolean hasDate(BaseActivitySummary item) {
return true;
}
@Override
protected String getTimeFrom(BaseActivitySummary item) {
Date time = item.getStartTime();
return DateTimeUtils.formatTime(time.getHours(), time.getMinutes());
}
@Override
protected String getTimeTo(BaseActivitySummary item) {
Date time = item.getEndTime();
return DateTimeUtils.formatTime(time.getHours(), time.getMinutes());
}
@Override
protected String getActivityName(BaseActivitySummary item) {
String activityLabel = item.getName();
String separator = ",";
if (activityLabel == null) {
activityLabel = "";
separator = "";
}
String activityKindName = ActivityKind.asString(item.getActivityKind(), getContext());
return String.format("%s%s %s", activityKindName, separator, activityLabel);
}
@Override
protected String getStepLabel(BaseActivitySummary item) {
return null;
}
@Override
protected String getDistanceLabel(BaseActivitySummary item) {
return null;
}
@Override
protected String getHrLabel(BaseActivitySummary item) {
return null;
}
@Override
protected String getIntensityLabel(BaseActivitySummary item) {
return null;
}
@Override
protected String getDurationLabel(BaseActivitySummary item) {
Long duration = item.getEndTime().getTime() - item.getStartTime().getTime();
return DateTimeUtils.formatDurationHoursMinutes(duration, TimeUnit.MILLISECONDS);
}
@Override
protected boolean hasHR(BaseActivitySummary item) {
return false;
}
@Override
protected boolean hasIntensity(BaseActivitySummary item) {
return false;
}
@Override
protected boolean hasDistance(BaseActivitySummary item) {
return false;
}
@Override
protected boolean hasSteps(BaseActivitySummary item) {
return false;
}
@Override @Override
protected int getIcon(BaseActivitySummary item) { protected int getIcon(BaseActivitySummary item) {
return ActivityKind.getIconId(item.getActivityKind()); return ActivityKind.getIconId(item.getActivityKind());
} }
public void setBackgroundColor(int backgroundColor) {
this.backgroundColor = backgroundColor;
}
} }

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selected" android:state_activated="true" />
</selector>

View File

@ -3,16 +3,20 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/list_item_parent_layout" android:id="@+id/list_item_parent_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:background="?android:attr/activatedBackgroundIndicator"> <!--
android:background="?android:attr/activatedBackgroundIndicator"
-->
<LinearLayout <LinearLayout
android:id="@+id/list_item_subparent_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp" android:layout_marginBottom="5dp"
android:background="@drawable/list_selector"
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <LinearLayout
@ -21,12 +25,13 @@
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <LinearLayout
android:id="@+id/line_layout_time"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/line_layout_timeFrom" android:id="@+id/line_layout_time_from"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end" android:layout_gravity="end"
@ -35,9 +40,9 @@
android:text="14:30" /> android:text="14:30" />
<TextView <TextView
android:id="@+id/line_layout_timeTo" android:id="@+id/line_layout_time_to"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_gravity="end" android:layout_gravity="end"
android:layout_weight="1" android:layout_weight="1"
android:gravity="bottom" android:gravity="bottom"
@ -53,7 +58,7 @@
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/line_layout_activityIcon" android:id="@+id/line_layout_activity_icon"
android:layout_width="56dp" android:layout_width="56dp"
android:layout_height="56dp" android:layout_height="56dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
@ -70,7 +75,7 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/line_layout_activityName" android:id="@+id/line_layout_activity_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxLines="1" android:maxLines="1"
@ -78,17 +83,35 @@
android:text="Running" android:text="Running"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <LinearLayout
android:id="@+id/line_layout_duration_labe" android:id="@+id/line_layout_duration_gps"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="2dp" android:layout_gravity="start"
android:layout_marginEnd="2dp" android:gravity="start"
android:layout_weight="1" android:orientation="horizontal">
android:gravity="end"
android:maxLines="1" <TextView
android:scrollHorizontally="false" android:id="@+id/line_layout_duration_label"
android:text="25min" /> android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginEnd="2dp"
android:layout_weight="1"
android:gravity="end"
android:maxLines="1"
android:scrollHorizontally="false"
android:text="25min" />
<ImageView
android:id="@+id/line_layout_gps_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="end"
android:contentDescription="@string/candidate_item_device_image"
app:srcCompat="@android:drawable/ic_menu_mylocation" />
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -192,7 +215,7 @@
<LinearLayout <LinearLayout
android:id="@+id/line_layout_hr" android:id="@+id/line_layout_hr"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="start" android:layout_gravity="start"
android:gravity="start" android:gravity="start"
android:orientation="horizontal"> android:orientation="horizontal">
@ -220,6 +243,37 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/line_layout_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:gravity="start"
android:orientation="horizontal">
<!--
<ImageView
android:id="@+id/line_layout_date_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="start"
android:contentDescription="@string/candidate_item_device_image"
app:srcCompat="@drawable/ic_calendar_today" />
-->
<TextView
android:id="@+id/line_layout_date_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_weight="1"
android:gravity="start"
android:maxLines="1"
android:scrollHorizontally="false"
android:text="1.1.1973" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -35,4 +35,6 @@
<color name="alternate_row_background_light">#FFEDEDED</color> <color name="alternate_row_background_light">#FFEDEDED</color>
<color name="alternate_row_background_dark">#545254</color> <color name="alternate_row_background_dark">#545254</color>
<drawable name="selected">@color/accent</drawable>
</resources> </resources>