java - ArrayList 大小在循环外为零

标签 java android arraylist

我正在使用 ParseObject 获取一些数据,在循环中一切正常,但在循环之外似乎列表将被删除并且大小为零,我想知道这个!请帮助我

public class frag1 extends Fragment {


public frag1() {
    // Required empty public constructor
}

String TAG="val";
public static ArrayList<getData> data;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View v=inflater.inflate(R.layout.fragment_frag1, container, false);
    data=new ArrayList<getData>();

    ListView list=(ListView)v.findViewById(R.id.list);
    list.setAdapter(new listAdapter());

    ParseQuery<ParseObject> query = ParseQuery.getQuery("mPlayDataBase");
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> obj, ParseException e) {

            if (e == null) {
                for(ParseObject po:obj){

                    String st1=(String) po.getString("name");
                    String st2=(String) po.getString("family");
                    String st3=(String) po.getString("phone");

                    data.add(new getData(st1,st2,st3));
                    Log.v(TAG,"size "+ data.size());//the size here is 3 and this is right
                }

            } else {
                Log.v(TAG,"WRONG VALUE");

            }
        }
    });


    Log.v(TAG,"size2  "+ data.size());//the problem is here,size is 0


    return v;

最佳答案

问题是query.findInBackground()是异步执行代码的,所以会触发调用,不等待fetching完成,直接继续执行这一行

Log.v(TAG,"size2 "+ data.size());//问题来了,size为0

然后当抓取完成时调用 done() 然后你可以看到它有 3 个元素,

那么如何解决呢?

将您的代码移至done() 或将其放入函数中并在done() 中调用该函数

希望这对您有所帮助!

关于java - ArrayList 大小在循环外为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47958668/

相关文章:

android - 如何将位置类型 ArrayList 从 android 中的 MainActivity 传递给 MapsActivity?

java - JIMAGE 文件的 JAR 文件 META-INF/MANIFEST.MF 的等价物是什么?

java - 使用 mvn 命令构建 Scala 项目

java - 获取给定日期范围内月份的开始日期和结束日期

android - 使用 Bitmap.createScaledBitmap 并不总是有效

android - OKHttp获取Android下http transferStart时间和transferDone时间

java - 使用 mvn -v 不支持major.minor版本51.0

javascript - 在 UIManager 中找不到 "RNCSafeAreaView"

Java Arraylist 计算仅从文本文件读取第一行

java - 在复杂的 HashMap 中使用 StringJoiner