2017-02-18 81 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对其进行测试。

相关问题