2017-02-18 80 views
0

我無法從Firebase檢索實時數據,我跟蹤了很多網站,但是沒有解決我的問題。他們主要是在回收視圖,但我想檢索我的數據到列表視圖..德爾沒有錯誤,但我的列表視圖是空白的,當我在模擬器中運行它。此外,因爲它會在我的項目中使用的卡片視圖相關的一些問題,我不能用火力UI。請幫助 -無法從Firebase中檢索數據到列表視圖

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(); 
      } 
     });*/ 
    } 

} 

回答

0

我去過那兒。我沒有瀏覽整個代碼,但是如果您從Firebase獲取數據並將其添加到列表中,則需要使用「刷新」之類的內容。

我所做的是;

我在頁面底部添加了一個按鈕,當我點擊它時重新啓動了這個意圖。

Pseudo會像;

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(); 

} 

這解決了我的問題,我得到的數據,但沒有顯示在我的listView。

如果您的「食物」數組爲空或者沒有,您還可以使用ToastMessage對其進行測試。

相關問題