【发布时间】:2018-07-08 17:11:26
【问题描述】:
我不可能解决这个刚刚出现的问题..之前一切正常....这是错误:
com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 com.example.nicco.wallpapersapp.GridItem 类型 在 com.google.android.gms.internal.zzbtg.zze(未知来源) 在 com.google.android.gms.internal.zzbtg.zzb(未知来源) 在 com.google.android.gms.internal.zzbtg.zza(未知来源) 在 com.google.firebase.database.DataSnapshot.getValue(未知来源) 在 com.firebase.ui.database.FirebaseRecyclerAdapter.parseSnapshot(FirebaseRecyclerAdapter.java:151) 在 com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:140) 在 com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:183) 在 android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482) 在 android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515) 在 android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5458) 在 android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5724) 在 android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563) 在 android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559) 在 android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229) 在 android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556) 在 android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516) 在 android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608) 在 android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693) 在 android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410) 在 android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1710) 在 android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:346) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) 在 android.view.Choreographer.doCallbacks(Choreographer.java:686) 在 android.view.Choreographer.doFrame(Choreographer.java:618) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 应用程序终止。
我的班级:
public class HomePage extends AppCompatActivity {
private DrawerLayout mDraw;
private android.support.v7.app.ActionBarDrawerToggle mToggle;
private DatabaseReference mDatabase;
private RecyclerView recycler;
private Toolbar mToolbar;
private NavigationView nView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
mDatabase = FirebaseDatabase.getInstance().getReference("landscape");
recycler = findViewById(R.id.recyclerView);
recycler.setLayoutManager(new LinearLayoutManager(this));
//layoutManager = new GridLayoutManager(this,2);
//recycler.setLayoutManager(layoutManager);
recycler.setHasFixedSize(true);
mToolbar = findViewById(R.id.toolbarNature);
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("Landscape Wallpapers");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDraw = findViewById(R.id.drawerLayout);
mToggle = new android.support.v7.app.ActionBarDrawerToggle(this, mDraw, mToolbar, R.string.open, R.string.close);
mDraw.addDrawerListener(mToggle);
mToggle.syncState();
nView = findViewById(R.id.navigViewNature);
nView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if(id == R.id.landscape_area){
startActivity(getIntent());
}
if(id == R.id.wallMoment){
startActivity(new Intent(HomePage.this, AppMoment.class));
}
if(id == R.id.minimal_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
if(id == R.id.city_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
if(id == R.id.mountain_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
if(id == R.id.beach_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
if(id == R.id.sea_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
if(id == R.id.cars_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
if(id == R.id.bikes_area){
//startActivity(new Intent(AppMoment.this, AppMoment.class));
}
return false;
}
});
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<GridItem, MyViewHoler> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<GridItem, MyViewHoler>(
GridItem.class,
R.layout.gridview_item_layout,
MyViewHoler.class,
mDatabase
) {
@Override
protected void populateViewHolder(MyViewHoler viewHolder, GridItem model, int position) {
final String imageData = getRef(position).getKey();
viewHolder.setImage(getApplicationContext(), model.getImage());
}
};
recycler.setAdapter(firebaseRecyclerAdapter);
recycler.setHasFixedSize(true);
}
public static class MyViewHoler extends RecyclerView.ViewHolder {
View mView;
public MyViewHoler(View itemView) {
super(itemView);
mView = itemView;
}
public void setImage(Context ctx, String image){
ImageView mImage = mView.findViewById(R.id.item_image);
//Picasso.with(ctx).load(image).into(mImage);
Glide.with(ctx).load(image).into(mImage);
}
}
}
我的 GridItem 类:
public class GridItem {
private String image;
public GridItem(){
}
public GridItem(String image) {
this.image = image;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
这是数据库:
wallpapaersapp
-beach
-bikes
-cars
-city
-landscape
image: "https://firebasestorage.googleapis.com/v0/b/wal..."
-minimal
-mountain
-sea
-wallmoment
【问题讨论】:
-
请编辑您的问题以在您的参考位置显示数据库的内容:
/landscape。 -
"之前的一切都很完美" ?在什么之前?
-
@DougStevenson 完成,最后我在 Firebase 上输入了数据库
-
@Barns 是的,一切正常。结束我写的数据库
-
@DougStevenson 好像它无法将图像 url 识别到数据库中,因为它说它无法将其转换为字符串
标签: android firebase firebase-realtime-database