Я хочу отобразить значения от датчика до RecyclerView, поэтому я написал некоторый стандартный код для реализации RecyclerView.Но у меня есть эта ошибка:
com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Double to String
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertString(com.google.firebase:firebase-database@@17.0.0:408)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@17.0.0:199)
....
Моя база данных:

И мои классы:
SensorModel
public class SensorModel {
String temp, hum, pressure, time;
public SensorModel()
{
}
public SensorModel(String temp, String hum, String pressure, String time) {
this.temp = temp;
this.hum = hum;
this.pressure = pressure;
this.time = time;
}
}
SensorAdapter
public class SensorAdapter extends RecyclerView.Adapter<SensorAdapter.SensorViewHolder> {
private List<SensorModel> list;
public SensorAdapter(List<SensorModel> list) {
this.list = list;
}
@NonNull
@Override
public SensorViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new SensorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.sensorlist,parent,false));
}
@Override
public void onBindViewHolder(@NonNull SensorViewHolder sensorViewHolder, int i) {
SensorModel sensor = list.get(i);
sensorViewHolder.textTemp.setText(sensor.temp);
sensorViewHolder.textHum.setText(sensor.hum);
sensorViewHolder.textPress.setText(sensor.pressure);
sensorViewHolder.textData.setText(sensor.time);
}
@Override
public int getItemCount() {
return 0;
}
class SensorViewHolder extends RecyclerView.ViewHolder
{
TextView textTemp, textHum, textPress, textData;
public SensorViewHolder(View itemView)
{
super(itemView);
textTemp = itemView.findViewById(R.id.text_temp);
textHum = itemView.findViewById(R.id.text_hum);
textPress = itemView.findViewById(R.id.text_press);
textData = itemView.findViewById(R.id.textData);
}
}
}
И MainActivity
database = FirebaseDatabase.getInstance();
reference = database.getReference("sensor");
result = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.sensorlist);
recyclerView.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(llm);
adapter = new SensorAdapter(result);
recyclerView.setAdapter(adapter);
.....
Query queryRecycler = reference.limitToLast(5);
queryRecycler.addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) {
result.add(dataSnapshot.getValue(SensorModel.class));
adapter.notifyDataSetChanged();
}
});
Итак, яизменил тип переменных с SensorModel на Double и Long и преобразовал их в SensorAdapter в методе onBindViewHolder в String, но это не помогает.Я получил ошибки: Double to String или Long to String и т. Д.