2016-06-22 4 views
0

Ich versuche, eine Liste der Tweets zu erhalten, aber die Ergebnis Tweets Liste muss endgültig sein, und das ist ein Problem, weil ich de Ergebnis mit der Liste zurückgeben will.World kann zurückgegeben werden Ergebnis ist einmal gefüllt ??Liste der Tweets si alles null

public class FollowingActivity extends AppCompatActivity implements TweetFragment.OnFragmentInteractionListener{ 

    //ListView homeList; 
    //SwipeRefreshLayout mySwipeRefreshLayout; 
    FloatingActionButton fab; 

    MyPagerAdapter mPagerAdapter; 
    ViewPager mviewPager; 
    private List<Fragment> listaFragments; 
    TwitterConnect twc; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_following); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     twc = new TwitterConnect(); 
     Result<List<Tweet>> result = twc.getHomeTimeLine();//result is always null 


     listaFragments = new ArrayList<Fragment>(); 
     listaFragments.add(TweetFragment.newInstance(1)); 
     listaFragments.add(TweetFragment.newInstance(2)); 
     listaFragments.add(TweetFragment.newInstance(3)); 


     // Creamos nuestro Adapter 
     mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), 
       listaFragments); 

     // Instanciamos nuestro ViewPager 
     mviewPager = (ViewPager) findViewById(R.id.viewPager); 

     // Establecemos el Adapter 
     mviewPager.setAdapter(mPagerAdapter); 

     fab = (FloatingActionButton)findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent i = new Intent(FollowingActivity.this, ComposeTweet.class); 
       startActivity(i); 
      } 
     }); 

    } 

    @Override 
    public void onFragmentInteraction(Uri uri) { 

    } 
} 

Und das ist die cla whre ich die Liste bekommen haben

public class TwitterConnect { 
    TwitterApiClient twitterApiClient; 
    StatusesService statusesService; 
    Result<List<Tweet>> tweets; 

    public TwitterConnect(){ 
     twitterApiClient = TwitterCore.getInstance().getApiClient(); 
     statusesService = twitterApiClient.getStatusesService(); 
    } 

    private void callHomeTimeLine(){ 

     statusesService.homeTimeline(200, null, null, null, null, null, null, new Callback<List<Tweet>>() { 
      @Override 
      public void success(Result<List<Tweet>> result) { 
       setHomeTimeLine(result); 
      } 

      @Override 
      public void failure(TwitterException exception) { 
       Log.e("FAILURE", "Fallo en callHomeTimeLine"); 
      } 
     }); 

    } 

    private void setHomeTimeLine(Result<List<Tweet>> result){ 
     this.tweets = result; 
    } 

    private Result<List<Tweet>> getTweets() { 
     return this.tweets; 
    } 

    public Result<List<Tweet>> getHomeTimeLine(){ 
     callHomeTimeLine(); 

     return getTweets(); 
    } 
} 

Antwort

1

Methode success() asynchron ist, so dass Sie warten müssen, bis er die Liste der Tweets zurückzukehren genannt wird.

können Sie tun:

public void getHomeTimeLine(){ 
    statusesService.homeTimeline(200, null, null, null, null, null, null, new Callback<List<Tweet>>() { 
     @Override 
     public void success(Result<List<Tweet>> result) { 
      displayTweets(result); 
     } 

     @Override 
     public void failure(TwitterException exception) { 

     } 
    }); 
} 

Dann könnten Sie die Tweets anzuzeigen oder zu tun, was Sie in dieser Methode wollen:

private void displayTweets(Result<List<Tweet>> tweets) { 
    // Your logic 
} 
+0

ich das erste psost mit den Änderungen bearbeitet habe ich getan haben – AFS

+0

Sie tat die gleiche Logik wie du, aber auf andere Weise. Versuche zu tun, was ich gepostet habe –