Muse_Sun 2017-02-16 14:13 采纳率: 0%
浏览 947

安卓新手想问下执行顺序的问题

这是Activity代码:

    private  ListView listView;
    private List<User.UserMess> list=new ArrayList<User.UserMess>();
    public GetDataFromInternet getData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getData=new GetDataFromInternet(GlobalContants.USER_URL);
        getData.getData(GlobalContants.USER_URL);
        list=getData.getUserlist();
        listView= (ListView) findViewById(R.id.list_test);
        if(list!=null){
            System.out.println(list.size());
            listView.setAdapter(new AdapterList(this,list));
        }
        else {
            System.out.println("error");
        }

    }

定义的获取网络数据的类:

        public  class GetDataFromInternet {

        private String murl;
        User user;
        public ArrayList<User.UserMess> userlist=new ArrayList< User.UserMess>();


        public GetDataFromInternet(String url){
            this.murl=url;
        }

        public void getData(String url) {
            HttpUtils uitls=new HttpUtils();
            uitls.send(HttpMethod.GET, url, new RequestCallBack<String>() {
                public void onSuccess(ResponseInfo responseInfo){
                    String result= (String) responseInfo.result;
                    if(result!=null){
                        System.out.println("GetDateFromInternet:从网络获取数据");
                        parseDataTest(result);
                    }
                }
                public void onFailure(com.lidroid.xutils.exception.HttpException error, String msg) {
                    System.out.println("获取数据失败");
                }


            });
        }

        public void parseDataTest(String result) {
            Gson gson=new Gson();
            user=gson.fromJson(result,User.class);
            if(user!=null){
                this.userlist=user.data;
                System.out.println("GetDateFromIntent解析成功");
            }
        }

        public ArrayList<User.UserMess> getUserlist() {
            return userlist;
        }

我的问题是在Activity里初始化时,先执行了

 System.out.println(list.size());

这句测试代码,之后再完成了数据解析,导致我没获取到想拿的数据,最后执行结果控制台打印顺序为
I/System.out: 0
I/System.out: GetDateFromInternet:从网络获取数据
I/System.out: GetDateFromIntent解析成功

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-02-16 14:43
    关注

    uitls.send(HttpMethod.GET, url, new RequestCallBack()
    关键是这个,这里是伊布执行的,也就是先调用send下面的代码。什么时候收到返回的数据,什么时候执行RequestCallBack定义的回调函数,因为网络延迟不同,所以什么时候调用不确定。

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退