You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DeviceListAdapter.java 3.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.example.greenwatch.adapters;
  2. import android.graphics.Color;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.TextView;
  7. import androidx.annotation.NonNull;
  8. import androidx.recyclerview.widget.RecyclerView;
  9. import com.example.greenwatch.R;
  10. import com.example.greenwatch.models.Device;
  11. import java.util.ArrayList;
  12. import java.util.Collections;
  13. import java.util.Comparator;
  14. import java.util.List;
  15. public class DeviceListAdapter extends RecyclerView.Adapter<DeviceListAdapter.DeviceListHolder> {
  16. private List<Device> devices = new ArrayList<>();
  17. @NonNull
  18. @Override
  19. public DeviceListHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  20. View itemView = LayoutInflater.from(parent.getContext())
  21. .inflate(R.layout.device_item, parent, false);
  22. return new DeviceListHolder(itemView);
  23. }
  24. @Override
  25. public void onBindViewHolder(@NonNull DeviceListHolder holder, int position) {
  26. Device currentDevice = devices.get(position);
  27. holder.textViewSensorType.setText(holder.itemView.getContext().getString(R.string.sensor_type_placeholder, currentDevice.getSensorType()));
  28. holder.textViewDeviceID.setText(holder.itemView.getContext().getString(R.string.deviceID_placeholder, currentDevice.getDeviceID()));
  29. holder.textViewTimeStamp.setText(holder.itemView.getContext().getString(R.string.sensor_time_stamp_placeholder, currentDevice.getTimeStamp()));
  30. holder.textViewSensorMessage.setText(holder.itemView.getContext().getString(R.string.sensor_message_placeholder, currentDevice.getSensorMassage()));
  31. holder.setDeviceSensorStatus(currentDevice);
  32. }
  33. @Override
  34. public int getItemCount() {
  35. return devices.size();
  36. }
  37. public void setDevices(List<Device> devices) {
  38. this.devices = devices;
  39. Collections.sort(this.devices, new Comparator<Device>() {
  40. @Override
  41. public int compare(Device device1, Device device2) {
  42. if (device1.getSensorStatus() && !device2.getSensorStatus()) {
  43. return -1;
  44. } else if (!device1.getSensorStatus() && device2.getSensorStatus()) {
  45. return 1;
  46. } else {
  47. return 0;
  48. }
  49. }
  50. });
  51. notifyDataSetChanged();
  52. }
  53. class DeviceListHolder extends RecyclerView.ViewHolder {
  54. private TextView textViewSensorType;
  55. private TextView textViewSensorStatus;
  56. private TextView textViewDeviceID;
  57. private TextView textViewTimeStamp;
  58. private TextView textViewSensorMessage;
  59. public DeviceListHolder(View itemView) {
  60. super(itemView);
  61. textViewSensorType = (TextView) itemView.findViewById(R.id.tvDeviceSensorType);
  62. textViewSensorStatus = (TextView) itemView.findViewById(R.id.tvDeviceSensorStatus);
  63. textViewDeviceID = (TextView) itemView.findViewById(R.id.tvDeviceID);
  64. textViewTimeStamp = (TextView) itemView.findViewById(R.id.tvDeviceTimeStamp);
  65. textViewSensorMessage = (TextView) itemView.findViewById(R.id.tvDeviceSensorMassage);
  66. }
  67. public void setDeviceSensorStatus(Device device) {
  68. if (device.getSensorStatus()) {
  69. textViewSensorStatus.setText(itemView.getContext().getString(R.string.sensor_status_placeholder, "AN"));
  70. itemView.setBackgroundColor(Color.RED);
  71. }
  72. else {
  73. textViewSensorStatus.setText(itemView.getContext().getString(R.string.sensor_status_placeholder, "AUS"));
  74. itemView.setBackgroundColor(Color.WHITE);
  75. }
  76. }
  77. }
  78. }