From a054b2a068cbbcb2e0acd1fa680e38b615e77de7 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 13 Jun 2023 20:37:37 +0200 Subject: [PATCH] Added RecyclerView for device list to project --- .../adapters/DeviceListAdapter.java | 92 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 12 ++- app/src/main/res/layout/device_item.xml | 61 ++++++++++++ app/src/main/res/values/strings.xml | 5 + 4 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/example/greenwatch/adapters/DeviceListAdapter.java create mode 100644 app/src/main/res/layout/device_item.xml diff --git a/app/src/main/java/com/example/greenwatch/adapters/DeviceListAdapter.java b/app/src/main/java/com/example/greenwatch/adapters/DeviceListAdapter.java new file mode 100644 index 0000000..3b28b20 --- /dev/null +++ b/app/src/main/java/com/example/greenwatch/adapters/DeviceListAdapter.java @@ -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 { + private List 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 devices) { + this.devices = devices; + Collections.sort(this.devices, new Comparator() { + + @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); + } + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ac1cba0..2401650 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -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"> + + + + android:layout_weight="3">