मेरे पास एक गतिविधि है जो फ़ायरबेस डेटाबेस से डेटा पढ़ती है और डेटा को फ़ायरबेस सूची एडाप्टर में प्रदर्शित करती है। सूची दृश्य में प्रत्येक आइटम में 2 संपादन टेक्स्ट और आइटम को सूची दृश्य और फायरबेस डेटाबेस दोनों से हटाने के लिए एक बटन है। फायरबेस सूची एडेप्टर प्रदर्शित करने के लिए कोड नीचे दिया गया है

      adapter =new FirebaseListAdapter <TravelDetails>
   ( options){
  protected void populateView(View v, TravelDetails model, int position) {
Button delete=(Button)v.findViewById(R.id.button_accept);
final TextView z=(TextView)v.findViewById(R.id.dropoff);
final TextView text=(TextView)v.findViewById(R.id.txref);
text.setText(model.getTxt_Ref());
 z.setText(model.getDropoffspot());
 delete.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {.....

सूची दृश्य ठीक काम करता है। डेटा firebase से लोड किया गया है, लेकिन मैं सूची दृश्य और फ़ायरबेस डेटाबेस दोनों से आइटम हटाने के लिए इस बटन को हटाने में सक्षम होना चाहता हूं। मैंने शोध किया और केवल आइटम क्लिक और बटन का उपयोग न करने के तरीके ढूंढे, एक उदाहरण यह है एंड्रॉइड स्टूडियो सूचीदृश्य और फायरबेस दोनों से आइटम हटा देता है लेकिन मुझे नहीं पता कि डेटाबेस से आइटम से जुड़े बटन पर सिद्धांत को कैसे लागू किया जाए। कृपया सहायता प्रदान करें

नीचे मेरी एडेप्टर क्लास पब्लिक क्लास TravelDetails का कोड है {

    private String dropoffspot;
    private String txt_Ref;

    public TravelDetails(){

    }


    public String getDropoffspot(){
    return dropoffspot;
     }
    public void setDropoffspot(String dropoffspot){
    this.dropoffspot=dropoffspot;
    }

    public String getTxt_Ref() {
    return txt_Ref;
    }

       public void setTxt_Ref(String txt_Ref) {
       this.txt_Ref = txt_Ref;
     }

  } 
0
Bwalya 10 अक्टूबर 2019, 00:08

2 जवाब

सबसे बढ़िया उत्तर

मुझे पता चला कि मेरी समस्या का समाधान कैसे किया जाए। मैं इसे केवल क्लिक विधि पर हटाए गए बटन में जोड़ता हूं।

         public void onClick(View v) {
         DatabaseReference item=adapter.getRef(position) ;
         item.removeValue();

} });

0
Bwalya 10 अक्टूबर 2019, 18:49

आप अपने एडॉप्टर के अंदर ऐसा कर सकते हैं

// make this function inside your adapter

protected void populateView(View v, ArrayList<TravelDetails> models, final int position) {
    Button delete=(Button)v.findViewById(R.id.button_accept);
    final TextView z=(TextView)v.findViewById(R.id.dropoff);
    final TextView text=(TextView)v.findViewById(R.id.txref);
    text.setText(model.getTxt_Ref());
    z.setText(model.getDropoffspot());
    delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // code to delete from firebase
            models.remove(position); // delete from adapter array list
            notifyDataSetChanged(); // refresh adapter
        }
    }
}
1
Saif 10 अक्टूबर 2019, 06:34
अब मैं getTxt_Ref() विधि को हल नहीं कर सकता और साथ ही getDropoffSpot विधि को हल नहीं कर सकता।
 – 
Bwalya
10 अक्टूबर 2019, 09:15
साथ ही त्रुटि 'फायरबेस सूची एडाप्टर से प्राप्त वर्ग अज्ञात वर्ग को या तो सार घोषित किया जाना चाहिए या फायरबेस सूची एडाप्टर में विधि पॉप्युलेटव्यू (देखें, टी, int) लागू किया जाना चाहिए' यह कोड के तहत है, 'एडेप्टर = नया फायरबेस लिस्ट एडाप्टर <ट्रैवेल विवरण> (विकल्प )...
 – 
Bwalya
10 अक्टूबर 2019, 09:25
मुझे अभी भी आपकी प्रतिक्रिया का इंतजार है
 – 
Bwalya
10 अक्टूबर 2019, 11:56
क्या आप एडॉप्टर क्लास का पूरा कोड दिखा सकते हैं। आप प्रश्न में कोड अपडेट कर सकते हैं।
 – 
Saif
10 अक्टूबर 2019, 12:43
आपका मतलब है कि TravelDetails वर्ग उपयोग कर रहा है?
 – 
Bwalya
10 अक्टूबर 2019, 12:44