从Android上的FirebaseDatabase获取位图时出错
我有一个类有一个位图对象,当我将value(MyClass.class)设置到FirebaseDatabase时,我发现这是可能的!实时数据库保存位图图像的属性。读取值时出现问题,出现以下错误:从Android上的FirebaseDatabase获取位图时出错,android,firebase,firebase-realtime-database,bitmap,android-bitmap,Android,Firebase,Firebase Realtime Database,Bitmap,Android Bitmap,我有一个类有一个位图对象,当我将value(MyClass.class)设置到FirebaseDatabase时,我发现这是可能的!实时数据库保存位图图像的属性。读取值时出现问题,出现以下错误: com.google.firebase.database.DatabaseException: Class android.graphics.Bitmap is missing a constructor with no arguments 但是我不能重写位图图像的构造函数。我怎样才能摆脱这种局面 r
com.google.firebase.database.DatabaseException: Class android.graphics.Bitmap is missing a constructor with no arguments
但是我不能重写位图图像的构造函数。我怎样才能摆脱这种局面
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterator<DataSnapshot> iterator = dataSnapshot.getChildren().iterator();
log("Init ValueEventListener onDataChange()");
while( iterator.hasNext() ) {
DataSnapshot data = iterator.next();
log("Data : " + data.getKey());
Treino t = data.getValue(Treino.class);
}
}
}
public class Treino implements Serializable{
String nome;
List<Exercicio> listaExercicios;
List<Integer> listaDiasSemana;
String hora; // hh:mm
public Treino(String nome, List<Exercicio> listaExercicios, List<Integer> listaDiasSemana, String hora) {
this.nome = nome;
this.listaExercicios = listaExercicios;
this.listaDiasSemana = listaDiasSemana;
this.hora = hora;
}
public class Exercicio implements Serializable {
String nome, tipo, nomeImagem;
Bitmap imagem;
public Exercicio() {
}
public Exercicio(String nome, Bitmap imagem, String nomeImagem) {
this.nome = nome;
this.imagem = imagem;
this.nomeImagem = nomeImagem;
}
ref.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
迭代器迭代器=dataSnapshot.getChildren().Iterator();
日志(“Init ValueEventListener onDataChange()”;
while(iterator.hasNext()){
DataSnapshot data=iterator.next();
日志(“数据:+Data.getKey());
treinot=data.getValue(Treino.class);
}
}
}
公共类Treino实现了可序列化{
字符串名称;
列表列表;
罗列清单;
字符串hora;//hh:mm
公共树(字符串nome、列表listaexercios、列表listaDiasSemana、字符串hora){
this.nome=nome;
this.listaexercios=listaexercios;
this.listaDiasSemana=listaDiasSemana;
this.hora=hora;
}
公共类Exercicio实现了可序列化{
管柱nome、tipo、nomeImagem;
位图图像;
公共实践(){
}
公共练习(字符串nome、位图imagem、字符串nomeImagem){
this.nome=nome;
this.imagem=imagem;
this.nomeImagem=nomeImagem;
}
我省略了getter和setter。必须将位图转换为字符串 这是密码
public String BitMapToString(Bitmap bitmap){
ByteArrayOutputStream ByteStream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100, ByteStream);
byte [] b=ByteStream.toByteArray();
String temp=Base64.encodeToString(b, Base64.DEFAULT);
return temp;
}
和练习类
public class Exercicio implements Serializable {
String nome, tipo, nomeImagem;
String bitmapImageString;
public Exercicio() {
}
public Exercicio(String nome, String imagem, String nomeImagem) {
this.nome = nome;
this.bitmapImageString = imagem;
this.nomeImagem = nomeImagem;
}
}
从服务器获取字符串时。必须将字符串转换为位图
public Bitmap StringToBitMap(String encodedString){
try{
byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);
Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
return bitmap;
}catch(Exception e){
e.getMessage();
return null;
}
}
希望!帮助你