首页 > 解决方案 > 如何让firebase中的所有信息显示在屏幕上

问题描述

在此处输入图像描述我试图在屏幕上显示以下信息,但没有显示类型。我认为我的代码应该可以工作,但它只显示用户名..我不确定下面的代码哪里出错了,因为我可以成功地将信息插入数据库但无法检索所有信息..

 public class MainActivity  extends AppCompatActivity {

    EditText editTextName;
    Spinner spinnerGenres;
    Button buttonAdd;

    DatabaseReference databaseArtists;

    ListView listViewArtists;

    List<Artist> artistList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FirebaseOptions options = new FirebaseOptions.Builder()
                .setProjectId("Faourite Place in Melbourne")
                .setApplicationId("")
                .setApiKey("")

                // setStorageBucket(...)
                .build();


        databaseArtists = FirebaseDatabase.getInstance("https://favourite-place-in-melbourne.firebaseio.com/").getReference();

        editTextName = (EditText)findViewById(R.id.editTextName);
        buttonAdd = (Button)findViewById(R.id.buttonAddArtist);
        spinnerGenres = (Spinner) findViewById(R.id.spinnerGenres);

        listViewArtists = (ListView)findViewById(R.id.listViewArtists);

        artistList = new ArrayList<>();

        buttonAdd.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
               addArtist();
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();

        databaseArtists.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                artistList.clear();

               for(DataSnapshot artistSnapshot: dataSnapshot.getChildren()) {
                   Artist artist = artistSnapshot.getValue(Artist.class);

                   artistList.add(artist);
               }

                ArtistList adapter = new ArtistList(MainActivity.this, artistList);
               listViewArtists.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

    private void addArtist() {
        String name = editTextName.getText().toString().trim();
        String genre = spinnerGenres.getSelectedItem().toString();

        if(!TextUtils.isEmpty(name)) {
           String id = databaseArtists.push().getKey();

           Artist user = new Artist(id, name, genre);
           databaseArtists.child(id).setValue(user);

           Toast.makeText(this, "Favourite Places added", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this,"You should enter a name", Toast.LENGTH_LONG).show();
        }
    }
}

在此处输入图像描述

标签: androidfirebase-realtime-database

解决方案


推荐阅读