2016-06-22 8 views
0

私はつぶやきのリストを取得しようとしていますが、結果のつぶやきのリストは最終的なものでなければなりません、そして、私はリストの結果をreturntしたいので、これは問題です。結果は一度満たされますか?つぶやきの一覧私はすべてが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) { 

    } 
} 

そして、私は方法success()リスト

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(); 
    } 
} 

答えて

1

を取得する必要がありますwhreこれはCLASでは非同期ですので、あなたはつぶやきのリストを返すために呼び出されるまで待たなければなりません。

あなたが行うことができます

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) { 

     } 
    }); 
} 

その後、あなたはつぶやきを表示したり、あなたがこの方法でやりたいことができます:

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

私は – AFS

+0

あなたを行っている変更で最初psostを編集しましたあなたが持っていたのと同じ論理をしましたが、他の方法ではありませんでした。私が投稿したことをやってみて –

関連する問題