Создать экземпляр класса в addValueEventListener (new ValueEventListener () - PullRequest
0 голосов
/ 19 июня 2020

в первую очередь, чтобы поместить вас в кадр. Я извлекаю данные из firebase и помещаю их в listView. Все, что я начал с создания класса «Корзина продукта», затем «produitAdapter», затем после нескольких тестов я уверен что у меня есть доступ к данным в базе, но мне не удалось добавить его в параметр моего экземпляра класса produitaupanier, даже если я попытался поместить текст stati c только для теста, но та же проблема, и если я поставил «prod4 = новый Produitaupanier ("rob inet", "10 $"); " в onCreate его прогулка, по-видимому, я не могу создать экземпляр класса в методе lisentner события value

produitaupanier class enter code here

 public class Produitaupanier {
//public int image;
 public String produit;
 public String prix;

public Produitaupanier() {}

public Produitaupanier( String produit, String prix) {
  //  this.image = image;
    this.produit = produit;
    this.prix = prix;


}
public String getproduit() {
    return produit;
}
public String getprix() {
    return prix;
}



public void setProduit(String text) {
    this.produit = text;
}
public void setprix(String prix) {
    this.prix = prix;
}



@NonNull
@Override
public String toString() {
    return produit+prix;
}

}

produitadapter class enter code here

   public class produitAdapter extends ArrayAdapter {

    Context Adapter;
    int adapterresourse;
   produit[] produitresource;
     public produitAdapter(@NonNull Context context, int resource, @NonNull produit[] prod) {
    super(context, resource, prod);
    Adapter=context;
    adapterresourse=resource;
    produitresource=prod;
}

@Nullable
@Override
public Object getItem(int position) {
    return super.getItem(position);
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View row;
    LayoutInflater rowinfalter=LayoutInflater.from(Adapter);
    row=rowinfalter.inflate(adapterresourse,parent,false);
    ImageView image1= (ImageView) row.findViewById(R.id.imageView);
    ImageView image= (ImageView) row.findViewById(R.id.imageView2);
    TextView namejava= (TextView) row.findViewById(R.id.textView3);
    produit produito=produitresource[position];
    namejava.setText(produito.text);
    int Imageid=Adapter.getResources().getIdentifier(String.valueOf(produito.image),"drawable",Adapter.getPackageName());
    image1.setImageResource(Imageid);
   // image1.setImageResource(Integer.parseInt(produito.payer));



    return row;
}

} и принципала класса

enter code here



public class panier extends AppCompatActivity {
TextView panier;
FirebaseAuth mAuth ;
String userID;
List<Produitaupanier> s;
Produitaupanier   pro[]=new Produitaupanier[100];
Produitaupanier prod4 ;
Produitaupanier proddd;
Produitaupanier receivedData;

 private ArrayList<Produitaupanier> list = new ArrayList<Produitaupanier>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_panier);
    panier=(TextView) findViewById(R.id.textView5);
    ListView list=(ListView) findViewById(R.id.panier);
    mAuth = FirebaseAuth.getInstance();
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef= database.getReference("users");
    FirebaseUser user = mAuth.getCurrentUser();
    userID = user.getUid();
    DatabaseReference key=myRef.child("8YPx1PLsETMntHRtv9foIoA2tSL2");
    DatabaseReference key2=key.child("panier");
    DatabaseReference key3=key2.child("numbers");
    //Produitaupanier prod5=new Produitaupanier(R.drawable.fourencastable,"four encastrable","payer");
    //Produitaupanier prod6=new Produitaupanier(R.drawable.lavevaisselleintegrable,"lave vaisselle integrable","payer");
    key3.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            // prod4 = new Produitaupanier("jsdjhsdj", "77777");
            for(DataSnapshot activitySnapShot: dataSnapshot.getChildren()) {
                   // String desc = activitySnapShot.child("produit").getValue(String.class);
                  //  String title = activitySnapShot.child("prix").getValue(String.class);
                prod4=new Produitaupanier("robinet","10$");


                //receivedData = activitySnapShot.getValue(Produitaupanier.class);
                   // Toast.makeText(panier.this, receivedData.getproduit(), Toast.LENGTH_LONG).show();

                }
            }




        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

   Produitaupanier[] pro= {prod4};    //prod5,prod6};
   ProduitAdapterPanier produitAdapte=new ProduitAdapterPanier(com.example.progress.panier.this,R.layout.listtemplate,pro);
  list.setAdapter(produitAdapte);
}

public void paa(View view) {
}

} baseStructure

enter code here


"users" : {
"8YPx1PLsETMntHRtv9foIoA2tSL2" : {
  "email" : "******",
  "name" : "*******",
  "panier" : {
    "numbers" : {
      "-MA0PCLZ0JV1QcmfstKu" : {
        "prix" : "250$",
        "produit" : "lave linge"
      },
      "-MA0PDMNrFoI5MrP8Lmc" : {
        "prix" : "250$",
        "produit" : "Robinet"
      },
      "-MA0PDSj4VJEYEvOZS1w" : {
        "prix" : "250$",
        "produit" : "lave linge"
      }
    }
  },

сообщение об ошибке

enter code here


java.lang.NullPointerException: Attempt to read from field 'java.lang.String 
    com.example.progress.Produitaupanier.produit' on a null object reference
    at com.example.progress.ProduitAdapterPanier.getView(ProduitAdapterPanier.java:52)

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...