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

Java Android Arraylist在分配给它的方法[duplicate]之外为null

高修伟
2023-03-14

我正在开发我的社交网络的家;因此,要查看以下用户的帖子,我必须在数组列表中插入以下所有用户。以下变量是全局声明的:

private ArrayList<String> Uidrecord = new ArrayList<>();
private ArrayList<String> uidFollowing = new ArrayList<>(); 

我是这样做的:(这是在oncreate上)

FirebaseFirestore.getInstance().collection("following").document(FirebaseAuth.getInstance().getCurrentUser().getUid()).collection("userFollowing").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        document.getData();
                        Uidrecord.add(cont,String.valueOf(document.getData()));
                        cont++;
                    }
                    int conta = 0;
                    for (String item: Uidrecord){
                        if(item == null) {
                            Toast.makeText(MainActivity.this, "null item", Toast.LENGTH_SHORT).show();
                            break;
                        }
                        uidFollowing.add(conta, item);
                        //Toast.makeText(MainActivity.this, uidFollowing.get(conta), Toast.LENGTH_SHORT).show();
                        conta++;

                    }
                    Toast.makeText(MainActivity.this, uidFollowing.size() + "", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, task.getException().toString(), Toast.LENGTH_SHORT).show();
                }
            }
        });

问题是,当我去做(在addOnCompleteListener方法之外,但总是在oncreate中)时:

uidFollowing.get(0) 

返回的值为空。

你知道我怎么解决这个问题吗?

共有1个答案

姬选
2023-03-14

是的,因为addOnCompleteListener是异步方法,所以您将得到null,如果您在addOnCompleteListener之外调用get()方法,get()方法将在onComplete()之前执行。如果要在0处调用项,请在add()之后立即调用。

  for (String item: Uidrecord){
                        if(item == null) {
                            Toast.makeText(MainActivity.this, "null item", Toast.LENGTH_SHORT).show();
                            break;
                        }
                        uidFollowing.add(conta, item);
                        //Toast.makeText(MainActivity.this, uidFollowing.get(conta), Toast.LENGTH_SHORT).show();
                        conta++;

                    }

log.i("following",String.valueOf(uidFollowing.get(0)))
 类似资料:
  • 我有下面的方法,我需要为它编写单元测试。但我不能窥探类密钥库。它抛出以下异常。

  • 问题内容: JDK中的Java Mission Control工具提供有关新TLAB中对象分配以及TLAB外部分配的统计信息。(在“内存/分配”下)。这些统计信息的意义是什么,对于应用程序的性能有什么好处?我是否应该担心是否在TLAB之外分配了一些对象,如果可以,该怎么办? 问题答案: TLAB是线程本地分配缓冲区。在HotSpot中分配对象的常规方法是在TLAB中。由于分配缓冲区是线程本地的,因

  • 我试图定义一个返回数组的方法(称为“range”)。我传递两个整数,比如m和n,它返回一个长度数组(n-m),如下表所示:隐式地,我假设n大于m。但我想明确地强加这个条件。有没有办法把这种条件强加给方法的论证?

  • 实际上,我正在尝试创建一个应用程序,有n个多媒体文件,其中包括图像和视频。我的应用程序大小大约为,我的资产大小大约为。当我在普通设备上加载应用程序时,我们没有遇到任何问题,但在具有的设备上,如等,应用程序在过程中崩溃,错误是“内存不足”。我已经用这个生成了错误报告。我也尝试过位图工厂。同时,我使用了数组的视频方法。 有谁能帮助解决这个问题吗? 致命异常:主进程:com.example.we.app

  • 为什么我不能在之外调用变量,这是我的代码

  • 假设我有一个df: 如何获取所有列名,但不包括名称与,匹配的列名,