-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

    }}

When I am Trying to access Data which From PostData class of method getRetrofitPostHospitalObject() variable "List gobalAr " in MainActivity when i call it is showing null value in gobalAr, Where as I have insert Data from of gobalArr in which add getRetrofitPostHospitalObject(), Please can Help..

Actually i want to access data "gobalAr" variable of PostData class to an MainActivity.

  • It's better to make `getter` for your list in `PostData` class. – Piyush Oct 26 '18 at 06:06
  • remove this line " Post c = new Post(); " because once you added data after that again you are intializing. so it will be null or in postArry.size() for loop you can write like this"Post c = new Post(); " – pratik vekariya Oct 26 '18 at 06:18
  • problem occur because Api wait for response and other part go on with execution. – Jins Lukose Oct 26 '18 at 06:26

2 Answers2

0

create get() method for List,like this

public List<String> getList(){
    return *****; 
  } 
Chord Chen
  • 36
  • 3
  • 8
0

Easy solution call this method in 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
}

Then do the rest inside. problem solved

Jins Lukose
  • 699
  • 6
  • 19