Android Firebase:检索ArrayList中的所有数据并从该ArrayList中随机选择字符串

Android Firebase:检索ArrayList中的所有数据并从该ArrayList中随机选择字符串,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在使用Firebase创建一个应用程序,用户可以在其中共享报价。数据插入成功,每次插入值后,数据库中的数据都是这样。 有关数据库值,请参见此图像: 我想获取ArrayList中的所有数据。单击刷新按钮的onclick,文本视图应更新为从ArrayList中随机选择的新值。我试过这样的东西。但它不起作用。它显示nullpointerexception public View onCreateView(LayoutInflater paramLayoutInflater, ViewGroup

我正在使用Firebase创建一个应用程序,用户可以在其中共享报价。数据插入成功,每次插入值后,数据库中的数据都是这样。 有关数据库值,请参见此图像:

我想获取ArrayList中的所有数据。单击刷新按钮的
onclick
,文本视图应更新为从ArrayList中随机选择的新值。我试过这样的东西。但它不起作用。它显示nullpointerexception

public View onCreateView(LayoutInflater paramLayoutInflater, ViewGroup paramViewGroup, Bundle paramBundle) {
    this.localView = paramLayoutInflater.inflate(R.layout.fragmenthome, paramViewGroup, false);
    story = (TextView) localView.findViewById(R.id.story_text);
    rl = (RelativeLayout) localView.findViewById(R.id.rlLayout);
    linearLayout = (LinearLayout) localView.findViewById(R.id.bottom_bar);
    imgRefresh = (ImageView) localView.findViewById(R.id.refreshStory);


    databaseReference = FirebaseDatabase.getInstance().getReference().child("stories");

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            storiesary = new ArrayList<String>();
            for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
                storiesary.add(childSnapshot.getValue().toString());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    imgRefresh.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setStory();
        }
    });

    return localView;

}

public void setStory()
{
    int arraysize = storiesary.size();
    final int arrayposition1 = (new Random()).nextInt(arraysize);
    story.setText(storiesary.get(arrayposition1));
}
创建视图的公共视图(LayoutFlater ParamLayoutFlater、ViewGroup paramViewGroup、Bundle paramBundle){ this.localView=paralayoutinflater.flate(R.layout.fragmenthome,paramViewGroup,false); story=(TextView)localView.findViewById(R.id.story\u text); rl=(RelativeLayout)localView.findviewbyd(R.id.rlLayout); linearLayout=(linearLayout)localView.findViewById(R.id.bottom_bar); imgRefresh=(ImageView)localView.findviewbyd(R.id.refreshStory); databaseReference=FirebaseDatabase.getInstance().getReference().child(“故事”); databaseReference.addValueEventListener(新的ValueEventListener(){ @凌驾 公共void onDataChange(DataSnapshot DataSnapshot){ storiesary=newarraylist(); 对于(DataSnapshot childSnapshot:DataSnapshot.getChildren()){ 添加(childSnapshot.getValue().toString()); } } @凌驾 已取消的公共void(DatabaseError DatabaseError){ } }); imgRefresh.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ setStory(); } }); 返回localView; } 公共图书馆 { int arraysize=storiesary.size(); final int arrayposition1=(new Random()).nextInt(arraysize); story.setText(storiesary.get(arrayposition1)); } 试试这个

databaseReference.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
         storiesary = new ArrayList<String>();
         for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
               HashMap map =(HashMap) childSnapshot.getValue();
               if(map!=null) {
                   storiesary.add(map.get("storytext"));
               }
               //or 
              String name = (String) childSnapshot.child("storytext").getValue();
          }
      }

      @Override
      public void onCancelled(DatabaseError databaseError) {
         Log.d(TAG,"Error");
      }
   });
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
storiesary=newarraylist();
对于(DataSnapshot childSnapshot:DataSnapshot.getChildren()){
HashMap=(HashMap)childSnapshot.getValue();
if(map!=null){
添加(map.get(“故事文本”);
}
//或
字符串名称=(字符串)childSnapshot.child(“故事文本”).getValue();
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Log.d(标记“错误”);
}
});

在此处发布错误日志