Java ArrayList大小在循环外为零
我正在使用ParseObject获取一些数据,循环中的每件事情都很好,但在循环之外,列表似乎将被删除,并且大小为零,我对此感到好奇!请帮帮我Java ArrayList大小在循环外为零,java,android,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 publ
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;
公共类frag1扩展片段{
公共框架1(){
//必需的空公共构造函数
}
String TAG=“val”;
公共静态数组列表数据;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment_frag1,容器,假);
数据=新的ArrayList();
ListView列表=(ListView)v.findViewById(R.id.list);
setAdapter(新的listAdapter());
ParseQuery=ParseQuery.getQuery(“mPlayDataBase”);
findInBackground(新的FindCallback(){
公共作废完成(列表对象,异常解析){
如果(e==null){
用于(解析对象po:obj){
字符串st1=(String)po.getString(“名称”);
字符串st2=(String)po.getString(“系列”);
String st3=(String)po.getString(“电话”);
添加(新的getData(st1、st2、st3));
Log.v(标记,“size”+data.size());//这里的大小是3,这是正确的
}
}否则{
Log.v(标签“错误值”);
}
}
});
Log.v(标记“size2”+data.size());//问题在这里,大小是0
返回v;
问题在于query.findInBackground()
异步执行代码,因此它将触发调用,而无需等待抓取完成,然后直接继续执行此行
Log.v(标记“size2”+data.size());//问题就在这里,大小是0
然后,当抓取完成时,调用done()
,然后您可以看到它有3个元素,那么如何解决这个问题呢? 将代码移动到
done()
或将其放入函数中,然后在done()中调用该函数
希望这有帮助!如果我们在for循环的parse query中添加元素,我们如何访问该arraylist之外的内容?