2017-02-18 14 views
0

firebaseからリアルタイムデータを取得できません。多くのサイトを追跡しましたが、何も問題を解決しません。彼らはほとんどがリサイクルビューになっていましたが、リストビューにデータを取得したいと思います.Dersエラーは表示されませんが、私のエミュレータではリストビューが空白です。それは私のプロジェクトで使用されるカードビューの依存関係に問題を作成するため、また、私は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

help--してください。あなたのコード全体を調べたわけではありませんが、firebaseからデータを取得してリストに追加すると、「リフレッシュ」のようなものが必要になります。

私がしたことは、

私はページの下部にボタンを追加しました。クリックすると、意図を再開します。

偽のようになります。

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

} 

これは私のデータを取得したが、私のリストビューに表示されなかった私の問題を解決しました。

"food"配列がnullであるかどうかをToastMessageでテストすることもできます。

関連する問題