我正在为我的应用使用firebase数据库。 我可以从数据库中添加和检索数据,但是当我尝试在arraylist中添加检索到的数据时,我无法填充arraylist。
public class SplitString {
public static void main(String[] args) {
String s = "This is test string1./This is test string2@(#*$ ((@@{}";
String[] fragments = s.split("/");
String fragment1 = fragments[0];
String fragment2 = fragments[1];
System.out.println(fragment1);
System.out.println(fragment2);
}
}
这个retrievePosts方法正在解析我的数据,而postList.add(post);第一行我试图将数据添加到arraylist。 我在调用retrievePosts()之前初始化了arraylist;方法,然后尝试在我的recyclyerView
中添加arraylist public void retrievePosts(){
retrievePosts.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Toast toast = Toast.makeText(getApplicationContext(), "There are " + dataSnapshot.getChildrenCount() + " blog posts", Toast.LENGTH_LONG);
toast.show();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Post post = postSnapshot.getValue(Post.class);
//adding data to the list
Toast toastNew = Toast.makeText(getApplicationContext(), post.getAuthor()+"_"+post.getTitle()+"_"+post.getContent(), Toast.LENGTH_SHORT);
toastNew.show();
postList.add(post);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Unable to fetch posts", Snackbar.LENGTH_LONG);
snackbar.show();
}
});
}
无法找到我做错的事。 提前谢谢!
答案 0 :(得分:0)
如果您的适配器引用了postList
,那么在postList
更改时也需要告知它,以便它可以告诉RecyclerView它需要重新查询它(适配器)更新的观点。
您可以使用RecyclerView.Adapter
上的notifyDataSetChanged()
method执行此操作。
你应该警惕 - 虽然不太可能,但是在初始化适配器之前可能会检索帖子(如果你使用我上面的答案,会导致空指针异常)。我会将retrievePosts()
电话移至最后。