Android 致命异常:使用RecyclerView从firebase读取数据时

Android 致命异常:使用RecyclerView从firebase读取数据时,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,实际上,我正在android应用程序中执行CRUD操作。create工作正常,但是我在从firebase读取数据时遇到了问题。 基本上,我在另一个类中创建了我的模式 这是我的回收适配器 public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> { //I am getting error here in this line i.e ERROR(Recyc

实际上,我正在android应用程序中执行CRUD操作。create工作正常,但是我在从firebase读取数据时遇到了问题。 基本上,我在另一个类中创建了我的模式

这是我的回收适配器

public class RecyclerAdapter extends 
RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> { //I am getting error here in this line i.e ERROR(RecyclerAdapter.java:22)

private Context mContext;
private List<StorageSchema> storageSchemas;
private OnItemClickListener mListener;

public RecyclerAdapter(Context context,List<StorageSchema> uploads){
    mContext = context;
    storageSchemas = uploads;
}

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int 
viewType) {
View v = 
LayoutInflater.from(mContext).inflate(R.layout.row_model,parent,false);
    return new RecyclerViewHolder(v);
}

@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
    StorageSchema currentItem = storageSchemas.get(position);
    holder.productnameTextView.setText(currentItem.getProductname());
    holder.productdescriptionTextView.setText(
                    currentItem.getProductdescription());
    Picasso.get()
            .load(currentItem.getImageUrl())
            .placeholder(R.drawable.placeholder)
            .fit()
            .centerCrop()
            .into(holder.productImageView);
    holder.rateTextView.setText(currentItem.getRate()); //I am getting error here in this line i.e ERROR(RecyclerAdapter.java:51)
    holder.unitTextView.setText(currentItem.getUnit());
}

public class RecyclerViewHolder extends RecyclerView.ViewHolder 
implements View.OnClickListener,
    View.OnCreateContextMenuListener, MenuItem.OnMenuItemClickListener {

    public TextView productnameTextView, productdescriptionTextView, 
rateTextView, unitTextView;
    public ImageView productImageView;

    public RecyclerViewHolder(View itemView){
        super(itemView);

        productnameTextView = 
itemView.findViewById(R.id.product_name_textview);
        productdescriptionTextView = 
itemView.findViewById(R.id.product_description_textview);
        rateTextView = itemView.findViewById(R.id.rate_textview);
        unitTextView = itemView.findViewById(R.id.unit_textview);
        productImageView = itemView.findViewById(R.id.imageView2);

        itemView.setOnClickListener(this);
        itemView.setOnCreateContextMenuListener(this);
    }
}
我通过从internet获取帮助来编写代码,但是我的名为“RecyclerAdapter”的回收器视图在BindViewHolder上生成了一个错误,如下所示: 致命异常:主 进程:com.example.freshveg,PID:6823 android.content.res.Resources$NotFoundException:字符串资源ID#0x1e

位于Adapter.RecyclerAdapter.onBindViewHolder(RecyclerAdapter.java:51)


在Adapter.RecyclerAdapter.onBindViewHolder(RecyclerAdapter.java:22)

中,问题是您试图为textview设置一个整数(
currentItem.getRate()
)值。文本视图。仅支持Charsequence

要解决此问题,请使用
String.valueOf()
将int值转换为字符串,如下所示

holder.ratextview.setText(String.valueOf(currentItem.getRate());

问题是您试图为textview设置一个整数(
currentItem.getRate()
)值。文本视图。仅支持Charsequence

要解决此问题,请使用
String.valueOf()
将int值转换为字符串,如下所示

holder.ratextview.setText(String.valueOf(currentItem.getRate());

请向我们显示整个消息错误并指明错误发生的行。请向我们显示整个消息错误并指明错误发生的行。很乐意提供帮助。很好,如果你能把这个标记为答案我想问的最后一件事不会花太多时间。我已经创建了一个浮动操作按钮,但是当列表在我的“回收者”视图中膨胀时,晶圆厂会在列表后面,我需要设置什么属性才能将其置于前面?默认情况下,晶圆厂有一个6dp的值使其超过其他视图。尝试添加更多的
高程
。我很乐意帮忙。很好,如果你能把这个标记为答案我想问的最后一件事不会花太多时间。我已经创建了一个浮动操作按钮,但是当列表在我的“回收者”视图中膨胀时,晶圆厂会在列表后面,我需要设置什么属性才能将其置于前面?默认情况下,晶圆厂有一个6dp的值使其超过其他视图。尝试添加更多的
高程
。检查
public class AdminHome extends AppCompatActivity implements 
RecyclerAdapter.OnItemClickListener {

private RecyclerView frecyclerView;
private RecyclerAdapter frecyclerAdapter;
private ProgressBar fprogressBar;
private FirebaseStorage fstorage;
private DatabaseReference fDatabaseRef;
private ValueEventListener fDBListener;
private List<StorageSchema> fProduct;
private FirebaseAuth firebaseAuth;

FloatingActionButton additem;

private void openDetailsActivity(String[] data){
    Intent i=new Intent(this, DetailsActivity.class);
    i.putExtra("PRODUCTNAME_KEY",data[0]);
    i.putExtra("PRODUCTDESCRIPTION_KEY",data[1]);
    i.putExtra("IMAGE_KEY",data[2]);
    i.putExtra("PRODUCTRATE_KEY",data[3]);
    i.putExtra("UNIT_KEY",data[4]);
    startActivity(i);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin_home);
    additem = findViewById(R.id.create_list_item);

    //listening the floatingbutton action
    additem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(AdminHome.this,Add_Item.class));
        }
    });


    firebaseAuth=FirebaseAuth.getInstance();
    FirebaseUser user = firebaseAuth.getCurrentUser();


    if(firebaseAuth.getCurrentUser()==null){
        startActivity(new Intent(this,LoginActivity.class));
    }

//starting reading data from firebase database and showing it into a list
    frecyclerView = findViewById(R.id.frecyclerview);
    frecyclerView.setHasFixedSize(true);
    frecyclerView.setLayoutManager(new LinearLayoutManager(this));

    fprogressBar = findViewById(R.id.fprogressBar);
    fprogressBar.setVisibility(View.VISIBLE);

    fProduct = new ArrayList<>();
    frecyclerAdapter = new RecyclerAdapter(AdminHome.this, fProduct);
    frecyclerView.setAdapter(frecyclerAdapter);
    frecyclerAdapter.setOnItemClickListener(AdminHome.this);

    fstorage = FirebaseStorage.getInstance();
    fDatabaseRef = 
FirebaseDatabase.getInstance().getReference("Products");
    fDatabaseRef.keepSynced(true);

    fDBListener = fDatabaseRef.addValueEventListener(new 
 ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
         fProduct.clear();
         for (DataSnapshot productSnapshot : dataSnapshot.getChildren()){
         StorageSchema upload = 
productSnapshot.getValue(StorageSchema.class);
                upload.setKey(productSnapshot.getKey());
                fProduct.add(upload);
            }
            frecyclerAdapter.notifyDataSetChanged();
            fprogressBar.setVisibility(View.GONE);
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Toast.makeText(AdminHome.this,databaseError.getMessage(), 
 Toast.LENGTH_SHORT).show();
            fprogressBar.setVisibility(View.INVISIBLE);
        }
    });
  }
}
public class StorageSchema {

private String productname;
private String productdescription;
private String imageUrl;
private int rate;
private String unit;
private int position;
private String key;


public StorageSchema(){
    //empty constructor needed
}

public StorageSchema(int position){
    this.position=position;
}

public StorageSchema(String productname, String productdescription, 
String imageUrl, int rate, String unit){
if(productname.trim().equals("")){
    productname = "No Name";
}
this.productname = productname;
this.productdescription = productdescription;
this.imageUrl = imageUrl;
this.rate = rate;
this.unit = unit;
}
//and here are the getter and setter which are autogenerated.