为了账号安全,请及时绑定邮箱和手机立即绑定

在改造之外打印时值为空的数组列表

在改造之外打印时值为空的数组列表

慕慕森 2022-05-25 17:48:29
为什么我的数组列表的值为空?当它在改造之外打印时,即使我已经声明了公共变量List<Profile> profileList = new ArrayList<Profile>();我想要在改造之外打印值数组列表但没有工作。当在改造内打印值数组列表时,它起作用了。这是我的代码你好.javaList<Profile> profileList = new ArrayList<Profile>();apiService.getGetlistuser("getlistuser").enqueue(new Callback<ResponseDaftar>() {        @Override        public void onResponse(Call<ResponseDaftar> call, Response<ResponseDaftar> response) {            if (response.isSuccessful()) {                List<GetlistuserItem> getlistuserItemList = response.body().getGetlistuser();                for (int i = 0; i < getlistuserItemList.size(); i++) {                    profileList.add(new Profile(                            getlistuserItemList.get(i).getUserID(),                            getlistuserItemList.get(i).getNickname()                    ));                }    /*       is working      for (Profile p : profileList){          Log.i("info", p.getUserid() + '\n' + p.getNickname());      }     */            }        }    });    // my value is empty    for (Profile p : profileList){        Log.i("info", p.getUserid() + '\n' + p.getNickname());    }改造接口@POST("GetListNews.php")    @FormUrlEncoded    Call<ResponseDaftar> getGetlistuser(@Field("TableName") String paramTable);
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您必须检查响应方法 (您评论的地方)中的数据,因为加载响应需要一些时间有时下一条语句会在响应可用之前运行。



查看完整回答
反对 回复 2022-05-25
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

从服务器获取数据可能会有一些延迟。


因此,您可以添加一个listener将在您的代码打印列表被填充后触发(如果您的打印代码将在另一个类中),或者如果它在同一个类中,则调用另一个方法。


示例代码


List<Profile> profileList = new ArrayList<Profile>();

public void getData(){

    final Listener listener = new Listener() {

        @Override

        public void onDataReceived() {

            //print command goes here

        }

    }

    apiService.getGetlistuser("getlistuser").enqueue(new Callback<ResponseDaftar>() {

        @Override

        public void onResponse(Call<ResponseDaftar> call, Response<ResponseDaftar> response) {

            if (response.isSuccessful()) {

                List<GetlistuserItem> getlistuserItemList = response.body().getGetlistuser();

                for (int i = 0; i < getlistuserItemList.size(); i++) {

                    profileList.add(new Profile(

                            getlistuserItemList.get(i).getUserID(),

                            getlistuserItemList.get(i).getNickname()

                    ));

                }

                printData(); //if it is in same class

                if(listener != null) 

                    listener.onDataReceived(); //if it is going to happen in another class

    /*

      is working

      for (Profile p : profileList){

          Log.i("info", p.getUserid() + '\n' + p.getNickname());

      }

    */



                }

            }


        });


    // my value is empty

    for (Profile p : profileList){

        Log.i("info", p.getUserid() + '\n' + p.getNickname());

    }

}


public void printData(){

    for (Profile p : profileList){

        Log.i("info", p.getUserid() + '\n' + p.getNickname());

    }

}


// this will be going to make in separate file 

interface Listener{

    void onDataReceived();

}


查看完整回答
反对 回复 2022-05-25
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您正在阅读 profileList 在填充之前。



查看完整回答
反对 回复 2022-05-25
  • 3 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信