首页 > 解决方案 > 问题:无法将 java.lang.String 类型的对象转换为类型

问题描述

我在运行我的应用程序的这一部分时遇到问题,我在此活动中使用了带有适配器的 recyclerwiew,但是发生了此错误:无法将 java.lang.String 类型的对象转换为类型。我已经多次使用相同的代码,它总是对我有用,我不知道会发生什么。

在此处输入图像描述

部分问题:

homeModelList = new ArrayList<>();

    mDatabaseRef = FirebaseDatabase.getInstance().getReference("Listas").child(post.getLid());
    Toast.makeText(ProductListActivity.this, post.getLid(), Toast.LENGTH_SHORT).show();
    mDatabaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            homeModelList.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                HomeModel homeModel = snapshot.getValue(HomeModel.class);
                    if (post.getLid().equals(post.getUidL())){
                        homeModelList.add(homeModel);
                    }
            }

            mAdapter = new ProductoAdapter(getApplicationContext(), homeModelList);
            recycler_viewLista.setAdapter(mAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

班级:

import java.io.Serializable;

public class HomeModel implements Serializable {
    private String Titulo;
    private String Uid;
    private String Lid;
    private String Producto;
    private Integer Cantidad;
    private String UidL;

    public HomeModel() {
    }

    public HomeModel(String titulo, String uid, String lid, String producto, Integer cantidad, String uidL) {
        Titulo = titulo;
        Uid = uid;
        Lid = lid;
        Producto = producto;
        Cantidad = cantidad;
        UidL = uidL;
    }

    public String getTitulo() {
        return Titulo;
    }

    public void setTitulo(String titulo) {
        Titulo = titulo;
    }

    public String getUid() {
        return Uid;
    }

    public void setUid(String uid) {
        Uid = uid;
    }

    public String getLid() {
        return Lid;
    }

    public void setLid(String lid) {
        Lid = lid;
    }

    public String getProducto() {
        return Producto;
    }

    public void setProducto(String producto) {
        Producto = producto;
    }

    public Integer getCantidad() {
        return Cantidad;
    }

    public void setCantidad(Integer cantidad) {
        Cantidad = cantidad;
    }

    public String getUidL() {
        return UidL;
    }

    public void setUidL(String uidL) {
        UidL = uidL;
    }
}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


更改以下内容:

public void onDataChange(DataSnapshot dataSnapshot) {
 homeModelList.clear();
  for (DataSnapshot snapshot : dataSnapshot.getChildren()){
    HomeModel homeModel = snapshot.getValue(HomeModel.class);
      if (post.getLid().equals(post.getUidL())){
         homeModelList.add(homeModel);
     }
  }

进入这个:

public void onDataChange(DataSnapshot dataSnapshot) {
 homeModelList.clear();
    HomeModel homeModel = dataSnapshot.getValue(HomeModel.class);
      if (post.getLid().equals(post.getUidL())){
         homeModelList.add(homeModel);

  }

推荐阅读