Android 致命异常:使用RecyclerView从firebase读取数据时
实际上,我正在android应用程序中执行CRUD操作。create工作正常,但是我在从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
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.