Added RecyclerView for device list to project

This commit is contained in:
Tinzch67102 committed 2023-06-13 20:37:37 +02:00
1 parent db74988f3d
commit a054b2a068
4 files changed
+168 -2

No files matched your search

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