java - 从 Firestore 获取 int 数据
问题描述
我试图从firestore获取int数据但在该应用程序崩溃之前我不知道为什么当我将它作为字符串尝试时它工作我得到它并且我可以列出它但是当我尝试它时int应用程序崩溃甚至在获取数据之前是我的代码第二部分是我的适配器 logchat 说 2 行是错误的我用楼梯标记它给你
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);
}
}
解决方案
那么问题出在适配器上。
你有 a private ArrayList<Integer> pointlistforadapter;
,问题是你正在做 holder.userpointtext.setText(pointlistforadapter.get(position));
并setText()
接受 a CharSeq
,它允许你添加一个Int
in 参数,因为它也有这个签名:
而且由于它不是残留物,它会崩溃。
你可以做的是:
holder.userpointtext.setText(pointlistforadapter.get(position).toString());
推荐阅读
- javascript - 填充 3 个动态选择框的 PHP/Jquery 问题
- algorithm - 您可以使用火车或公共汽车的城市之间的最短路径 动态编程
- ubuntu - 如何在 ubuntu 终端中使用“head”查看前 10 行手册
- swift - 我是编程新手,是否有更短的方法可以使用 case 或 caseif 之类的方法来实现相同的结果?
- python - Python - 根据其他列值应用滚动中位数
- javascript - 如何限制 PWA 服务工作者 fetch() 留在“mydomain”上,而不是转到“mydomain.com”
- spring - 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
- python - Python:在 CSV 文件中写入变量的值
- python - 关闭 Pi 相机的先前实例
- mysql - MySQL在多个事务中的重复条目