2017-02-18 6 views
0

Ich kann keine Echtzeitdaten von Firebase abrufen, ich habe viele Sites verfolgt, aber nichts löst mein Problem. Sie waren hauptsächlich auf Recycler-Ansicht, aber ich möchte meine Daten auf eine Listenansicht abrufen .. Das ist kein Fehler, aber meine Listenansicht ist leer, wenn ich es im Emulator ausführen. Außerdem kann ich nicht Feuerbasis ui verwenden, da es einige Probleme in der Kartenansicht Abhängigkeit in meinem Projekt verwendet schafft .. Bitte help--Ich kann keine Daten vom Firebase in der Listenansicht abrufen

package com.serverphone.healthyfoods; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.CheckedTextView; 
import android.widget.ListView; 

import com.firebase.client.ChildEventListener; 
import com.firebase.client.DataSnapshot; 
import com.firebase.client.Firebase; 
import com.firebase.client.FirebaseError; 

import java.util.ArrayList; 

public class AlaCarte extends AppCompatActivity { 

    ListView lv; 
    String arr[]=new String[]{"Paneer Butter Masala","Chicken Butter Masala","Chicken Biriyani"}; 
    ArrayList al=new ArrayList(); 
    ArrayList food=new ArrayList(); 
    Button btn; 


    Firebase mref; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_ala_carte); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Alacarte!!"); 

     mref=new Firebase("https://healthy-foods-270de.firebaseio.com/Food items"); 

     lv=(ListView)findViewById(R.id.listView); 
     btn=(Button)findViewById(R.id.button8); 
     final ArrayAdapter<String> aa=new ArrayAdapter<String>(AlaCarte.this,android.R.layout.simple_list_item_multiple_choice,food); 
     lv.setAdapter(aa); 
     mref.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

       //String key=dataSnapshot.getKey(); 
       //String value=dataSnapshot.getValue(String.class); 
       //String item=key+"-->"+value; 
       String value=dataSnapshot.getValue(String.class); 
       food.add(value); 
       aa.notifyDataSetChanged(); 

      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       CheckedTextView checkedTextView = ((CheckedTextView) view); 
       //checkedTextView.setChecked(!checkedTextView.isChecked()); 
       if (checkedTextView.isChecked()) { 
        checkedTextView.setChecked(false); 
        al.remove(adapterView.getItemAtPosition(i)); 
       } else { 
        checkedTextView.setChecked(true); 
        al.add(adapterView.getItemAtPosition(i)); 
       } 

      } 
     }); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if (al.isEmpty()) { 
        Snackbar.make(view, "Select check boxes to place your order", Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
       } else { 
        Intent i = new Intent(AlaCarte.this, ConfirmAlacarte.class); 
        i.putExtra("mylist",al); 
        startActivity(i); 

       } 
      } 
     }); 

     /*FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     });*/ 
    } 

} 

Antwort

0

ich dort bin. Ich habe den ganzen Code nicht durchgegangen, aber wenn Sie die Daten von Firebase erhalten und sie Ihrer Liste hinzufügen, benötigen Sie etwas wie "Aktualisieren".

Was ich getan habe, war;

Ich habe eine Schaltfläche am unteren Rand meiner Seite hinzugefügt und als ich darauf geklickt habe, starte die Absicht neu.

Pseudo wird wie sein;

public void Refresh(View view){   //refresh is onClick name given to the button 

    onRestart(); 
} 


@Override 
protected void onRestart() { 

    // TODO Auto-generated method stub 
    super.onRestart(); 
    Intent i = new Intent("YourClass".this, "YourClass".class); //your class 
    startActivity(i); 
    finish(); 

} 

Das löste mein Problem, wo ich die Daten bekam, aber nicht in meinem ListView angezeigt wurde.

Sie könnten es auch mit ToastMessage testen, wenn Ihr Array "Essen" null ist oder nicht.

Verwandte Themen