Android Firebase:检索ArrayList中的所有数据并从该ArrayList中随机选择字符串
我正在使用Firebase创建一个应用程序,用户可以在其中共享报价。数据插入成功,每次插入值后,数据库中的数据都是这样。 有关数据库值,请参见此图像: 我想获取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
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(标记“错误”);
}
});
在此处发布错误日志