【问题标题】:Populating a ListView with firebase data使用 Firebase 数据填充 ListView
【发布时间】:2017-05-31 21:42:13
【问题描述】:

我正在尝试填充我的 ListView,但我似乎无法弄清楚。我可以打印这些值并烤面包,然后它们就不会填充我的 ListView。有没有人可以帮我填充它?

主活动

package uk.co.jaunt_app.jaunt;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.CustomEvent;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

import static uk.co.jaunt_app.jaunt.R.id.Posts;

public class MainActivity extends AppCompatActivity{

    private FloatingActionButton addmap;
    private Button settingbtn;
    private TextView mNameTextView;
    private TextView mEmailTextView;
    ListView mPosts;
    ArrayAdapter<String> adapter;
    private FirebaseAuth auth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setLogo(R.drawable.jauntlogodark);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        setContentView(R.layout.activity_main);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, Posts);

        Firebase.setAndroidContext(this);

        Firebase ref = new Firebase(Config.FIREBASE_URL);
        FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();

        String uid = currentFirebaseUser.getUid();
        Firebase usersRef = ref.child("Users").child(uid).child("name");
        Firebase emailRef = ref.child("Users").child(uid).child("email");
        Firebase postRef = ref.child("Users").child(uid).child("Maps");

        mNameTextView = (TextView) findViewById(R.id.NameTextView);
        mPosts = (ListView) findViewById(Posts);


        postRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                for (final DataSnapshot postSnapshot : snapshot.getChildren()) {
                    //Getting the data from snapshot

                    Person person = postSnapshot.getValue(Person.class);
                    String posts = "Name: " + person.getMapName() + "\n\n";


                    Toast.makeText(getApplicationContext(),
                            "Name: " + person.getMapName(), Toast.LENGTH_LONG)
                            .show();

                    mPosts.setAdapter(adapter);
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });


        mEmailTextView = (TextView) findViewById(R.id.EmailTextView);

        emailRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                String email = dataSnapshot.getValue(String.class);
                mEmailTextView.setText(email);

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });



        addmap = (FloatingActionButton) findViewById(R.id.add_map);
        addmap.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Answers.getInstance().logCustom(new CustomEvent("Added Map"));
                Intent intent = new Intent(MainActivity.this, MapStartActivity.class);
                startActivity(intent);
            }
        });

        settingbtn = (Button) findViewById(R.id.settingbtn);
        settingbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
                startActivity(intent);
            }
        });

    }

}

【问题讨论】:

    标签: android listview firebase firebase-realtime-database


    【解决方案1】:

    1) 移动这个

    mPosts.setAdapter(adapter);
    

    到这里

    mPosts = (ListView) findViewById(Posts);
    mPosts.setAdapter(adapter);
    

    2) 这样做是为了实际显示数据

    String mapName = person.getMapName();
    adapter.add(mapName);
    

    3) 替换

    android.R.layout.simple_dropdown_item_1line 
    

    android.R.layout.android simple_list_item_1
    

    【讨论】:

    • 非常感谢,辛苦了!
    【解决方案2】:

    将您的适配器添加到您的列表视图中

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setLogo(R.drawable.jauntlogodark);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        setContentView(R.layout.activity_main);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, Posts);
    
        Firebase.setAndroidContext(this);
    
        Firebase ref = new Firebase(Config.FIREBASE_URL);
        FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    
        String uid = currentFirebaseUser.getUid();
        Firebase usersRef = ref.child("Users").child(uid).child("name");
        Firebase emailRef = ref.child("Users").child(uid).child("email");
        Firebase postRef = ref.child("Users").child(uid).child("Maps");
    
        mNameTextView = (TextView) findViewById(R.id.NameTextView);
        mPosts = (ListView) findViewById(Posts);
        mPosts.setAdapter(adapter);
    

    【讨论】:

    • 数据也需要添加到适配器中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多