栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

添加元素后ArrayList为空

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

添加元素后ArrayList为空

这里的问题是关于了解

asynchronous
任务如何工作的。当您向
volley
队列添加请求时,该请求将在 后台线程
(不在主线程中)中运行,并且控制权将传递到下一行。

因此,在此之后:

Volley.newRequestQueue(getActivity()).add(mealsrequest);

控制传递给此:

ArrayList<String> strs=new ArrayList<String>();String mealsnames[]=new String[meals.size()];

现在,由于

meals
在后台线程上进行了更新,因此您无法在控件到达时获取数据
String mealsnames[]=newString[meals.size()];

因此,您将在此处获得 大小(

meals.size()
)。

尝试将这部分代码移入

onResponse

尝试这样:

public void updateData(){   ArrayList<String> strs=new ArrayList<String>();   String mealsnames[]=new String[meals.size()];   for(int i=0;i<meals.size();i++)strs.add(meals.get(i).getName());   strs.toArray(mealsnames);   Log.i("debug","meals ou size "+meals.size());   CustomList  adapter = new CustomList(getActivity(),mealsnames,meals);   List = (ListView)view.findViewById(R.id.list);   List.setAdapter(adapter);}

并从以下方法调用此方法

onResponse

@Overridepublic void onResponse(String response) {    try{        JSonObject object= new JSonObject(response);        JSonArray mealsArray = object.getJSonArray("result");        for(int i=0;i<mealsArray.length();i++){ JSonObject cur = mealsArray.getJSonObject(i); int id= cur.getInt("id"); String name= cur.getString("name"); String description = cur.getString("description"); int price = cur.getInt("price"); meals.add(new meal(id,name,price,description));        }        Log.i("debug","meals size = "+meals.size());        updateData();    }    catch(JSonException e){        e.printStackTrace();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号