簡體   English   中英

如何從Firebase到Android的Listview中檢索所有節點數據?

[英]How can I retrieve all nodes data from Firebase to listview in Android?

我已經按照下面的教程進行了工作,但是它只能檢索一個空間節點數據,如何檢索所有節點數據? 下面的照片是我的數據庫。

在此處輸入圖片說明


DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("my url");
    final FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(this, String.class, android.R.layout.simple_list_item_1, databaseReference) {
        @Override
        protected void populateView(View v, String model, int position) {
            TextView textView= (TextView) v.findViewById(android.R.id.text1);
            textView.setText(model);
        }
    };
    listView.setAdapter(firebaseListAdapter);

FirebaseListAdapter可以顯示項目列表 您的數據模型不是列表,而是樹。 因此,無法使用單個FirebaseListAdapter進行顯示。

我創建了用於綁定ListView Adapter類和用於在ListView顯示項目列表的row_item.xml

FireListAdapter.java

public class FireListAdapter extends BaseAdapter {

    private List<User> modelList = new ArrayList<User>();
    private Context context;
    LayoutInflater inflater;

    public FireListAdapter(Context context, List<User> modelList) {
        this.context = context;
        this.modelList = modelList;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return modelList.size();
    }

    @Override
    public Object getItem(int position) {
        return modelList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {

        view = inflater.inflate(R.layout.row_item, null);

        TextView textName = (TextView) view.findViewById(R.id.textName);
        TextView textEmail = (TextView) view.findViewById(R.id.textEmail);
        textName.setText(modelList.get(position).getName());
        textEmail.setText(modelList.get(position).getEmail());

        return view;
    }
}

並創建Welcome.java來顯示ListView FirebaseDatabase中的數據。

    public class Welcome extends AppCompatActivity implements View.OnClickListener {

    private ListView listView;
    private List<User> myModelList = new ArrayList<User>();
    private DatabaseReference mFirebaseDatabase;
    private FirebaseDatabase mFirebaseInstance;
    private String TAG = Welcome.class.getSimpleName();

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        setUI();
        mFirebaseInstance = FirebaseDatabase.getInstance();
        // get reference to 'signUp' node Here signUp is table in FirebaseDatabase 
        mFirebaseDatabase = mFirebaseInstance.getReference("signUp");
        getData();
    }

    public void setUI() {
        textProfile = (TextView) findViewById(R.id.textWelcome);
        listView = (ListView) findViewById(R.id.listItem);
    }

    //This method is getting data from FirebaseDatabase
    public void getData() {
        mFirebaseDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Iterable<DataSnapshot> snapshotIterable = dataSnapshot.getChildren();
                Iterator<DataSnapshot> iterator = snapshotIterable.iterator();
                while (iterator.hasNext()) {

                    DataSnapshot dataSnapshot1 = iterator.next();
                    User user = dataSnapshot1.getValue(User.class);
                    user.setName(user.getName());
                    user.setEmail(user.getEmail());
                    myModelList.add(user);
                    FireListAdapter fireListAdapter = new FireListAdapter(Welcome.this, myModelList);
                    fireListAdapter.notifyDataSetChanged();
                    listView.setAdapter(fireListAdapter);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }
}

希望這個能對您有所幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM