我正在使用 firebase 数据库,想要在列表视图中显示数据。当我调用 firebase 数据库的 onDataChange() 时,它显示空指针异常。我在谷歌和许多其他网站上找到了最好的方法,但没有任何东西可以帮助我摆脱这个错误,所以请帮助我,我在过去三个小时内陷入了这个错误......这是名为 Articles_from_firebase.java 的 Mainactiviy:public class Articles_from_fireabse extends AppCompatActivity {EditText editTextName;Spinner spinnerGenre;Button buttonAddArtist;ListView listViewArtists;DatabaseReference databaseArtists;//a list to store all the artist from firebase databaseList<Artist> artists;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_articles_from_fireabse); databaseArtists = FirebaseDatabase.getInstance().getReference("artists"); editTextName = (EditText) findViewById(R.id.editTextName); spinnerGenre = (Spinner) findViewById(R.id.spinnerGenres); listViewArtists = (ListView) findViewById(R.id.listViewArtists); buttonAddArtist = (Button) findViewById(R.id.buttonAddArtist); buttonAddArtist.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //calling the method addArtist() //the method is defined below //this method is actually performing the write operation addArtist(); } });}private void addArtist() { //getting the values to save String name = editTextName.getText().toString().trim(); String genre = spinnerGenre.getSelectedItem().toString(); //checking if the value is provided if (!TextUtils.isEmpty(name)) { //getting a unique id using push().getKey() method //it will create a unique id and we will use it as the Primary Key for our Artist String id = databaseArtists.push().getKey(); //creating an Artist Object Artist artist = new Artist(id, name, genre); }}
2 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
简单的解决方案
每当您调用artists.clear();
检查以确保它不为空时。
if(artists != null) artists.clear(); else artists = new ArrayList<>();
可持续解决方案
你应该考虑对象 arry 的作用artists
是什么。在本例中,您有一个数据库和一个数组,它们都存储有关艺术家的信息。数据库应该存储持久数据,即程序执行后仍存在的数据。然而,您的artists
对象在运行时就存在。
因此,您应该在程序开始处编写代码,将数据从数据库加载到对象中artists
。在运行时引用/编辑/添加到artist
对象。最后,在运行时结束时使用清理代码来更新数据库中的艺术家表。
添加回答
举报
0/150
提交
取消