我無法理解這個問題。嘗試將實時資料庫或 code.firebasteki 中的資訊拉到螢屏時出現這樣的錯誤,這是什么問題?
書
public class Book {
private String isim;
private String soyad;
private String numara;
public Book() {
}
public Book(String isim, String soyad, String numara) {
this.isim = isim;
this.soyad = soyad;
this.numara = numara;
}
public String getIsim() {
return isim;
}
public void setIsim(String isim) {
this.isim = isim;
}
public String getSoyad() {
return soyad;
}
public void setSoyad(String soyad) {
this.soyad = soyad;
}
public String getNumara() {
return numara;
}
public void setNumara(String numara) {
this.numara = numara;
}
主要活動
public class MainActivity extends AppCompatActivity {
private RecyclerView mrecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mrecyclerView=(RecyclerView) findViewById(R.id.recyclerview_books);
new FirebaseDatabaseHelper().readBooks(new FirebaseDatabaseHelper.DataStatus() {
@Override
public void DataIsLoaded(List<Book> books, List<String> keys) {
new RecyclerView_Config().setConfig(mrecyclerView,MainActivity.this,books,keys);
}
@Override
public void DataIsInserted() {
}
@Override
public void DataIsUpdated() {
}
@Override
public void DataIsDeleted() {
}
});
}
RecyclerView_Config
public class RecyclerView_Config {
private Context mContext;
private BookAdapter mbookAdapter;
public void setConfig(RecyclerView recyclerView,Context context,List<Book> books,List<String>
keys){
mContext=context;
mbookAdapter=new BookAdapter(books,keys);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
recyclerView.setAdapter(mbookAdapter);
}
class BookItemView extends RecyclerView.ViewHolder{
private TextView misim;
private TextView msoyad;
private TextView mnumara;
private String key;
public BookItemView(ViewGroup parent){
super(LayoutInflater.from(mContext).
inflate(R.layout.book_list_item,parent,false));
misim=(TextView) itemView.findViewById(R.id.isim_textView);
msoyad=(TextView) itemView.findViewById(R.id.soyad_textView);
mnumara=(TextView) itemView.findViewById(R.id.numara_textView);
}
public void bind(Book book,String key){
misim.setText(book.getIsim());
msoyad.setText(book.getSoyad());
mnumara.setText(book.getNumara());
this.key=key;
}
}
class BookAdapter extends RecyclerView.Adapter<BookItemView>{
private List<Book> mbookList;
private List<String> mkeys;
public BookAdapter(List<Book> mbookList, List<String> mkeys) {
this.mbookList = mbookList;
this.mkeys = mkeys;
}
@NonNull
@Override
public BookItemView onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new BookItemView(parent);
}
@Override
public void onBindViewHolder(@NonNull BookItemView holder, int position) {
holder.bind(mbookList.get(position),mkeys.get(position));
}
@Override
public int getItemCount() {
return mbookList.size();
}
}
}
Firebase 資料庫助手
public class FirebaseDatabaseHelper {
private FirebaseDatabase mDatabase;
private DatabaseReference mReferenceBook;
private List<Book> books=new ArrayList<>();
public interface DataStatus{
void DataIsLoaded(List<Book> books,List<String> keys);
void DataIsInserted();
void DataIsUpdated();
void DataIsDeleted();
}
public FirebaseDatabaseHelper() {
mDatabase=FirebaseDatabase.getInstance();
mReferenceBook=mDatabase.getReference("Kullanicilar");
}
public void readBooks(final DataStatus dataStatus){
mReferenceBook.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
books.clear();
List<String> keys=new ArrayList<>();
for(DataSnapshot keyNode:snapshot.getChildren()){
keys.add(keyNode.getKey());
Book book=keyNode.getValue(Book.class);
books.add(book);
}
dataStatus.DataIsLoaded(books,keys);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
火力基地
E/AndroidRuntime:致命例外:主行程:com.example.phonebook,PID:14998 com.google.firebase.database.DatabaseException:無法將 java.lang.Long 型別的值轉換為 com.google.firebase.database 的字串.core.utilities.encoding.CustomClassMapper.convertString(CustomClassMapper.java:426) 在 com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(CustomClassMapper.java:217) 在 com.google.firebase.database .core.utilities.encoding.CustomClassMapper.deserializeToType(CustomClassMapper.java:179) 在 com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$100(CustomClassMapper.java:48) 在 com.google.firebase。 com.google.firebase.database.core.utilities.encoding 上的 database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(CustomClassMapper.java:593)。CustomClassMapper$BeanMapper.deserialize(CustomClassMapper.java:563) 在 com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(CustomClassMapper.java:433) 在 com.google.firebase.database.core.utilities。 encoding.CustomClassMapper.deserializeToClass(CustomClassMapper.java:232) 在 com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(CustomClassMapper.java:80) 在 com.google.firebase.database.DataSnapshot.getValue( DataSnapshot.java:203) 在 com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75) 在 com.google.example.phonebook.FirebaseDatabaseHelper$1.onDataChange(FirebaseDatabaseHelper.java:38) 在 com.google。 firebase.database.core.view.DataEvent.fire(DataEvent.java:63) 在 com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:214) 在 android。 app.ActivityThread.main(ActivityThread.java:7356) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com。 android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
uj5u.com熱心網友回復:
呼叫的欄位numara在您的Book類中以字串的形式存在,而在您的資料庫中則包含一個數字。這就是您收到該錯誤的原因。要解決這個問題,只需像這樣更改類的宣告:
public class Book {
private String isim;
private String soyad;
//??
private long numara;
public Book() {
}
//??
public Book(String isim, String soyad, long numara) {
this.isim = isim;
this.soyad = soyad;
this.numara = numara;
}
public String getIsim() {
return isim;
}
public void setIsim(String isim) {
this.isim = isim;
}
public String getSoyad() {
return soyad;
}
public void setSoyad(String soyad) {
this.soyad = soyad;
}
//??
public long getNumara() {
return numara;
}
//??
public void setNumara(long numara) {
this.numara = numara;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/481007.html
標籤:爪哇 安卓 火力基地 谷歌云平台 firebase-实时数据库
上一篇:Kotlin反射
下一篇:“Gradle任務assembleDebug失敗,退出代碼1”,因為“找不到或加載主類org.gradle.wrapper.GradleWrapperMain”
