当前位置: 首页 > 知识库问答 >
问题:

从firestore获取int数据

孙佑运
2023-03-14

FirebaseFirestore firestore;
ArrayList<String> useremaillist;
ArrayList<Integer> userpointlist;
SkorAdapter skorAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_skor_board);
    firestore=FirebaseFirestore.getInstance();
    useremaillist=new ArrayList<>();
    userpointlist=new ArrayList<>();
    getscore();
    RecyclerView skorboardrecyclerView=findViewById(R.id.recyclerView);
    skorboardrecyclerView.setLayoutManager(new LinearLayoutManager(this));
    skorAdapter=new SkorAdapter(useremaillist,userpointlist);
    skorboardrecyclerView.setAdapter(skorAdapter);

}
public void getscore(){
    CollectionReference collectionReference=firestore.collection("Kullanıcılar ve Skorlar");
    collectionReference.orderBy("skor", Query.Direction.DESCENDING).addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@Nullable  QuerySnapshot value, @Nullable  FirebaseFirestoreException error) {
            userpointlist.clear();
            useremaillist.clear();
            if(error!=null){
                Log.e("tag",error.getLocalizedMessage());
            }
            if(value!=null){
                for(DocumentSnapshot snapshot:value.getDocuments()){
                    Map<String,Object> userdatat=snapshot.getData();
                    String emailt=(String) userdatat.get("email");
                    int skor=(int) userdatat.get("skor");
                    useremaillist.add(emailt);
                    userpointlist.add(skor);
                    skorAdapter.notifyDataSetChanged();
                }

            }
        }

    });

}

  **   public class SkorAdapter extends RecyclerView.Adapter<SkorAdapter.Holder> {
private ArrayList<String> emaillistforadapter;
private ArrayList<Integer> pointlistforadapter;


public SkorAdapter(ArrayList<String> emaillistforadapter,ArrayList<Integer> pointlistforadapter ) {
    this.emaillistforadapter = emaillistforadapter;
    this.pointlistforadapter = pointlistforadapter;
}

@NonNull
@Override
public Holder onCreateViewHolder(@NonNull  ViewGroup parent, int viewType) {
    LayoutInflater layoutInflater=LayoutInflater.from(parent.getContext());
    View view=layoutInflater.inflate(R.layout.skorboard_row,parent,false);
    return new Holder(view);
}

@Override
public void onBindViewHolder(@NonNull  SkorAdapter.Holder holder, int position) {
    holder.useremailtext.setText(emaillistforadapter.get(position));
  **    holder.userpointtext.setText(pointlistforadapter.get(position));

}

@Override
public int getItemCount() {
    return emaillistforadapter.size();
}

public class Holder extends RecyclerView.ViewHolder {
    TextView useremailtext;
    TextView userpointtext;
    public Holder(@NonNull View itemView) {
        super(itemView);
        useremailtext=itemView.findViewById(R.id.kullanıcımailtext);
        userpointtext=itemView.findViewById(R.id.kullanıcıpointtext);

    }


}  

共有1个答案

苏淇
2023-03-14

问题出在适配器上。

您有一个私有数组列表 pointlistforadapter; ,问题是您正在执行holder.userpointtext.settext(Pointlistforadapter.get(position));settext()接受一个charseq并且它允许您在paramter中添加一个int,因为它也具有以下签名:

因为它不是残余物,所以它会崩溃。

holder.userpointtext.setText(pointlistforadapter.get(position).toString());
 类似资料:
  • 我需要从firestore中的以下数据结构中获取formName和id的数据。在这种情况下,如何获取数据,比如创建嵌套对象?

  • 问题内容: 我想从Firebase Firestore数据库获取数据。我有一个名为user的集合,每个用户都有一些相同类型的对象(My Java自定义对象)的集合。我想在创建我的活动时用这些对象填充ArrayList。 在onCreate()中: 调用以获取项目列表的方法: 问题答案: 该操作返回a ,这意味着它是一个 异步操作 。调用仅启动操作,它不等待操作完成,因此您必须添加成功和失败侦听器。

  • 我想从Firebase Firestore数据库中获取数据。我有一个名为user的集合,每个用户都有一些相同类型的对象(我的Java自定义对象)的集合。我想在创建活动时用这些对象填充ArrayList。 在创建()中: 调用方法以获取要列出的项:

  • 我必须得到一个特定用户的用户配置文件细节后,他们登录使用Firebase。现在,它正在返回我的FireStore中所有用户的详细信息。

  • 在第一个屏幕截图中,集合用户中有许多文档。每个文档都包含进一步的集合jobPost,该集合包含进一步的文档及其元数据。 我在这里想要的是去收集用户的每个文档和进一步的子收集jobPost并获取所有文档。假设首先它应该转到集合用户中的文档1,在文档1中它应该获取子集合jobPost中的所有文档,然后它应该转到集合用户的第二个文档,然后获取子集合jobPost中的所有文档,等等。

  • 我的目标是用子集合test2下的[0]th+[1]th+[2]the document的值更新数据更新的test1ID文档。 但是使用下面的代码,我得到了未定义的test2文档列表(currentTest2DocumentList)。 (错误消息=>TypeError:无法读取未定义的属性“0”) 我怎样才能获得有效的子托收文件列表?