2017-05-31 131 views
1

我想填充我的ListView,但我似乎无法弄清楚。我能够打印值和烤面包,然后他们只是不会填充我的ListView。有没有人可以帮助我填充它?用firebase数据填充ListView

MainActivity

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

    } 

} 

回答

2

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 
+0

太感谢你了,工作了对待! – AngryCubeDev

0

您的适配器添加到您的ListView

@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); 
+0

数据也需要加入到适配器 –