java - 在将数据从 firebase 获取到 string[] 数组时需要帮助。尝试了所有可用的方法,但坚持只获得最后一个值
问题描述
我正在尝试将存储在 firebase 中的所有值放入两个单独的 string[] 数组中。我正在获取值,但是在将其显示到列表视图中时,它仅显示最后一个添加的值。我也在使用自定义适配器类。
Database.child("users").child(mUserId).child("locs").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
final String[] main = {(String) ds.child("title").getValue()};
final String[] sub = {(String) ds.child("addr").getValue()};
System.out.println(main);//here i am getting 5 outputs like [Ljava.lang.String;@88b5c49. i have 5 values in firebase too
CustomAdapter adapter2 = new CustomAdapter(Location.this, main, sub);
list.setAdapter(adapter2);
}
}
});
自定义适配器类
public class CustomAdapter extends ArrayAdapter<String>{
private final Activity context;
private final String[] main;
private final String[] sub;
public CustomAdapter(Activity context,
String[] main, String[] sub) {
super(context, R.layout.layout, main);
this.context = context;
this.main = main;
this.sub = sub;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.layout, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.title);
TextView txtSub=rowView.findViewById(R.id.subtitle);
txtTitle.setText(main[position]);
txtSub.setText(sub[position]);
return rowView;
}
}
解决方案
尝试移动String[] main
,String[] sub
在循环之外。然后尝试将所有值添加到循环内的这些数组中。然后在完成循环后调用这些
CustomAdapter adapter2 = new CustomAdapter(Location.this, main, sub);
list.setAdapter(adapter2);
整个代码应该是这样的。
final String[] main; // declare it with the size it needs.
final String[] sub; // declare it with the size it needs.
for(DataSnapshot ds:dataSnapshot.getChildren()) {
// sum your result to main and sub
}
CustomAdapter adapter2 = new CustomAdapter(Location.this, main, sub);
list.setAdapter(adapter2);
推荐阅读
- c++ - 在 Linux 上从 shell 脚本执行时 C++ 程序中的文件路径问题
- python - 将 curl 命令映射到等于 python 请求函数
- node.js - Nodejs中如何将word文档转换为pdf
- android - 即使我不构建通知,通知声音也会播放
- go - 循环进口和缺乏仿制药导致头痛
- reactjs - 将 Creative Tim 的 react kit 与 Creative Tim 的仪表板集成,然后与 React-Redux-Firebase 后端集成
- ios - Firebase 是否在 iOS 应用程序中使用钥匙串?
- c# - URL 路由在 WordPress 站点上的 .NET 虚拟目录中不起作用
- rxjs - Rxjs6:无法处理异步函数中的错误
- c# - 从达到的最后一个级别继续游戏