I am working on an Inventory Management app for which I tried to retrieve data from my fire store database but I am not able to get why. I created a Adapter file and and Data file and linked them with main file
My Code for Main Activity file
package com.example.inventorymanagment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.firebase.firestore.DocumentChange;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
import java.util.ArrayList;
public class Measure extends AppCompatActivity {
RecyclerView recyclerView;
ArrayList<data> itemList;
adapter adapter;
FirebaseFirestore db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_measure);
recyclerView= findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
db = FirebaseFirestore.getInstance();
itemList= new ArrayList<>();
adapter= new adapter(Measure.this,itemList);
recyclerView.setAdapter(adapter);
getdata();
}
@SuppressLint("NotifyDataSetChanged")
private void getdata() {
db.collection("Inventory").orderBy("Name", Query.Direction.ASCENDING)
.addSnapshotListener((value, error) -> {
if(error!=null){
Log.e("Firestore error",error.getMessage());
return;
}
for(DocumentChange dc : value.getDocumentChanges()){
if(dc.getType() == DocumentChange.Type.ADDED){
itemList.add(dc.getDocument().toObject(data.class));
}
adapter.notifyDataSetChanged();
}
});
}
}
Code for Adapter file
package com.example.inventorymanagment;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class adapter extends RecyclerView.Adapter<adapter.MyViewHolder>{
Context context;
ArrayList<data> itemList;
public adapter(Context context, ArrayList<data>itemList)
{
this.context = context;
this.itemList = itemList;
}
@NonNull
@Override
public adapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
data data = itemList.get(position);
holder.Name.setText(data.Name);
holder.Quantity.setText(String.valueOf(data.Quantity));
}
@Override
public int getItemCount() {
return itemList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView Name, Quantity;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
Name=itemView.findViewById(R.id.name);
Quantity=itemView.findViewById((R.id.quantity));
}
}
}
My Code for Data file
package com.example.inventorymanagment;
public class data {
String Name;
long Quantity;
public data(){}
public data(String name, long quantity) {
Name = name;
Quantity = quantity;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public long getQuantity() {
return Quantity;
}
public void setQuantity(long quantity) {
Quantity = quantity;
}
}
please help me find my error
In onBindViewHolder(@NonNull MyViewHolder holder, int position) {
data data = itemList.get(position);
holder.Name.setText(data.Name);
holder.Quantity.setText(String.valueOf(data.Quantity));
try setting data.getName() instead of data.Name
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.