-4

PostData.java

public class PostData {

 List<String> gobalAr=new ArrayList<String>();

public List<String> getList(){
    return gobalAr;
}

public void setList( List<String> gl){
    this.gobalAr = gl;
}

String url = "http://btownmedia.com/";
ArrayList<Post> postArry = new ArrayList();
public List<String> bankin = new ArrayList<String>();



public  void getRetrofitPostHospitalObject() {

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(url)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    RetrofitObjectAPI service = retrofit.create(RetrofitObjectAPI.class);

    Call<PostArtical> call = service.getPostHospitalDetails();

    call.enqueue(new Callback<PostArtical>() {
        @Override
        public void onResponse(Response<PostArtical> response, Retrofit retrofit) {

            try {

                List<Post> PostData = response.body().getPosts();

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

                    Post p = new Post();
                    p.setId(PostData.get(i).getId());
                    p.setTitle(PostData.get(i).getTitle());
                    p.setExcerpt(PostData.get(i).getExcerpt());
                    p.setThumbnail(PostData.get(i).getThumbnail());

                    postArry.add(p);
                }
                gobalAr=new ArrayList<String>();
                for (int i = 0; i < postArry.size(); i++) {
                    Post c = new Post();
                    c=postArry.get(i);
                    gobalAr.add(c.getTitle());
                }
                setList(gobalAr);
                Log.d("valuein",gobalAr.toString()); //[Birtamode Eye Hospital (P) Ltd., Birta City Hospital, Life Line Hospital]


            } catch (Exception e) {
                Log.d("onResponse", "There is an error");
                e.printStackTrace();
            }

        }

        @Override
        public void onFailure(Throwable t) {
            Log.d("onFailure", t.toString());
        }
    });

    Log.d("valueout",gobalAr.toString());  // null
}}

MainActivity.java

 public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    PostData postData = new PostData();
    postData.getRetrofitPostHospitalObject();
    List<String> list = postData.getList();
    Log.d("On", list.toString()); //null

    }}

メソッドgetRetrofitPostHospitalObject ()PostDataクラスからの データにアクセスしようとすると、MainActivityの 変数 "List gobalAr" を呼び出すと、gobalAr に null 値が表示ます。助けてください..

実際には、PostData クラスのデータ「gobalAr」変数に MainActivity にアクセスしたいと考えています。

4

2 に答える 2

0

MainActivity でこのメソッドを呼び出す簡単なソリューション

public  void getRetrofitPostHospitalObject() {

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(url)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

RetrofitObjectAPI service = retrofit.create(RetrofitObjectAPI.class);

Call<PostArtical> call = service.getPostHospitalDetails();

call.enqueue(new Callback<PostArtical>() {
    @Override
    public void onResponse(Response<PostArtical> response, Retrofit retrofit) {

        try {

            List<Post> PostData = response.body().getPosts();

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

                Post p = new Post();
                p.setId(PostData.get(i).getId());
                p.setTitle(PostData.get(i).getTitle());
                p.setExcerpt(PostData.get(i).getExcerpt());
                p.setThumbnail(PostData.get(i).getThumbnail());

                postArry.add(p);
            }
            gobalAr=new ArrayList<String>();
            for (int i = 0; i < postArry.size(); i++) {
                Post c = new Post();
                c=postArry.get(i);
                gobalAr.add(c.getTitle());
            }
            setList(gobalAr);
            Log.d("valuein",gobalAr.toString()); //[Birtamode Eye Hospital (P) Ltd., Birta City Hospital, Life Line Hospital]


        } catch (Exception e) {
            Log.d("onResponse", "There is an error");
            e.printStackTrace();
        }

    }

    @Override
    public void onFailure(Throwable t) {
        Log.d("onFailure", t.toString());
    }
});

Log.d("valueout",gobalAr.toString());  // null
}

その後、残りを内部で行います。問題が解決しました

于 2018-10-26T06:23:12.743 に答える