으로 변환 할 수 없습니다. 책을 추가하고 책 목록을 볼 수있는 간단한 라이브러리 앱을 만들고 있습니다. 여기 Firebase java.lang.String 유형의 객체를
내 책 클래스public class Book {
private int _id;
private String _bookTitle;
private String _bookAuthor;
private int _bookISBN;
private Map<String, Object> mp;
public Book() {
}
public Book(String _bookTitle, String _bookAuthor, int _bookISBN) {
this._id = _id;
this._bookTitle = _bookTitle;
this._bookAuthor = _bookAuthor;
this._bookISBN = _bookISBN;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String get_bookTitle() {
return _bookTitle;
}
public void set_bookTitle(String _bookTitle) {
this._bookTitle = _bookTitle;
}
public String get_bookAuthor() {
return _bookAuthor;
}
public void set_bookAuthor(String _bookAuthor) {
this._bookAuthor = _bookAuthor;
}
public int get_bookISBN() {
return _bookISBN;
}
public void set_bookISBN(int _bookISBN) {
this._bookISBN = _bookISBN;
}
public Map<String, Object> toMap() {
mp = new HashMap<>();
mp.put("bookTitle", this._bookTitle);
mp.put("bookAuthor", this._bookAuthor);
mp.put("bookISBN", this._bookISBN);
return mp;
} }
이며, 여기에 이미 중포 기지
public class ViewBook extends AppCompatActivity {
ArrayList<String> myArrayList = new ArrayList<>();
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference();
// DatabaseReference mPostReference = ref.child("books");
DatabaseReference temp = ref.child("books");
ArrayAdapter<String> adapter;
@Override
public void onStart(){
super.onStart();
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Book book = postSnapshot.getValue(Book.class);
myArrayList.add(book.get_bookTitle() + "\n" + book.get_bookAuthor() + "\n" + book.get_bookISBN());
}
ListView lv = (ListView)findViewById(R.id.list);
adapter = new ArrayAdapter<String>(ViewBook.this, android.R.layout.simple_list_item_1, myArrayList);
lv.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Getting Post failed, log a message
Log.w("VIEWBOOKS", "loadPost:onCancelled", databaseError.toException());
}
};
temp.addValueEventListener(postListener);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_book);
}}
내가 오류에 기록 된 값에서 읽을 시도하고있는 곳입니다 점점 :
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.taylorcampos.androidfirebasedatabase, PID: 25339
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.taylorcampos.androidfirebasedatabase.Book
at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.example.taylorcampos.androidfirebasedatabase.ViewBook$1.onDataChange(ViewBook.java:38)
at com.google.android.gms.internal.zzbpx.zza(Unknown Source)
at com.google.android.gms.internal.zzbqx.zzZT(Unknown Source)
at com.google.android.gms.internal.zzbra$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
누군가 이런 일이 발생하는 이유와 내가 firebase에 담긴이 책들을 열거 할 수있는 목록보기를 얻는 방법을 설명하십시오.
"books"는 실제로 하나의 'Book'입니다. 'bookAuthor' (String)를'Book' (문자열이 아니고 String에서 읽을 수없는)으로 변환하려고하면 코드가 실패합니다.'books'는 코드가 작동하도록 JsonObjects 배열을 포함해야합니다. –