Browse Source

Added RecyclerView for device list to project

DoNotMerge_Runnable_Test_Branch
Christian Tinz 11 months ago
parent
commit
a054b2a068

+ 92
- 0
app/src/main/java/com/example/greenwatch/adapters/DeviceListAdapter.java View File

@@ -0,0 +1,92 @@
package com.example.greenwatch.adapters;

import android.graphics.Color;
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;

import com.example.greenwatch.R;
import com.example.greenwatch.models.Device;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class DeviceListAdapter extends RecyclerView.Adapter<DeviceListAdapter.DeviceListHolder> {
private List<Device> devices = new ArrayList<>();


@NonNull
@Override
public DeviceListHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.device_item, parent, false);
return new DeviceListHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull DeviceListHolder holder, int position) {
Device currentDevice = devices.get(position);
holder.textViewSensorType.setText(holder.itemView.getContext().getString(R.string.sensor_type_placeholder, currentDevice.getSensorType()));
holder.textViewDeviceID.setText(holder.itemView.getContext().getString(R.string.deviceID_placeholder, currentDevice.getDeviceID()));
holder.textViewTimeStamp.setText(holder.itemView.getContext().getString(R.string.sensor_time_stamp_placeholder, currentDevice.getTimeStamp()));
holder.textViewSensorMessage.setText(holder.itemView.getContext().getString(R.string.sensor_message_placeholder, currentDevice.getSensorMassage()));
holder.setDeviceSensorStatus(currentDevice);
}

@Override
public int getItemCount() {
return devices.size();
}

public void setDevices(List<Device> devices) {
this.devices = devices;
Collections.sort(this.devices, new Comparator<Device>() {

@Override
public int compare(Device device1, Device device2) {
if (device1.getSensorStatus() && !device2.getSensorStatus()) {
return -1;
} else if (!device1.getSensorStatus() && device2.getSensorStatus()) {
return 1;
} else {
return 0;
}
}
});
notifyDataSetChanged();
}

class DeviceListHolder extends RecyclerView.ViewHolder {
private TextView textViewSensorType;
private TextView textViewSensorStatus;
private TextView textViewDeviceID;
private TextView textViewTimeStamp;
private TextView textViewSensorMessage;

public DeviceListHolder(View itemView) {
super(itemView);
textViewSensorType = (TextView) itemView.findViewById(R.id.tvDeviceSensorType);
textViewSensorStatus = (TextView) itemView.findViewById(R.id.tvDeviceSensorStatus);
textViewDeviceID = (TextView) itemView.findViewById(R.id.tvDeviceID);
textViewTimeStamp = (TextView) itemView.findViewById(R.id.tvDeviceTimeStamp);
textViewSensorMessage = (TextView) itemView.findViewById(R.id.tvDeviceSensorMassage);
}

public void setDeviceSensorStatus(Device device) {
if (device.getSensorStatus()) {
textViewSensorStatus.setText(itemView.getContext().getString(R.string.sensor_status_placeholder, "AN"));
itemView.setBackgroundColor(Color.RED);
}
else {
textViewSensorStatus.setText(itemView.getContext().getString(R.string.sensor_status_placeholder, "AUS"));
itemView.setBackgroundColor(Color.WHITE);
}
}
}
}

+ 10
- 2
app/src/main/res/layout/activity_main.xml View File

@@ -13,14 +13,22 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:layout_weight="1">
android:layout_weight="4">
</TextView>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/deviceListRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
tools:listitem="@layout/device_item">
</androidx.recyclerview.widget.RecyclerView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1">
android:layout_weight="3">

<Button
android:id="@+id/audiodetectionButton"

+ 61
- 0
app/src/main/res/layout/device_item.xml View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp">
<TextView
android:id="@+id/tvDeviceSensorStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="@string/sensor_status_placeholder"
android:textAppearance="@style/TextAppearance.AppCompat.Large">
</TextView>

<TextView
android:id="@+id/tvDeviceSensorType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sensor_type_placeholder"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:maxLines="1"
android:layout_toStartOf="@id/tvDeviceSensorStatus"
android:layout_alignParentStart="true"
android:ellipsize="end">
</TextView>

<TextView
android:id="@+id/tvDeviceID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvDeviceSensorType"
android:text="@string/deviceID_placeholder">
</TextView>

<TextView
android:id="@+id/tvDeviceTimeStamp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvDeviceID"
android:text="@string/sensor_time_stamp_placeholder">
</TextView>

<TextView
android:id="@+id/tvDeviceSensorMassage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvDeviceTimeStamp"
android:text="@string/sensor_message_placeholder">
</TextView>

</RelativeLayout>

</androidx.cardview.widget.CardView>

+ 5
- 0
app/src/main/res/values/strings.xml View File

@@ -1,3 +1,8 @@
<resources>
<string name="app_name">GreenWatch</string>
<string name="sensor_type_placeholder">Sensortyp: %s</string>
<string name="sensor_status_placeholder">Sensorstatus: %s</string>
<string name="deviceID_placeholder">Sensor-ID: %s</string>
<string name="sensor_time_stamp_placeholder">Timestamp: %s</string>
<string name="sensor_message_placeholder">Sensormessage: %d</string>
</resources>

Loading…
Cancel
Save