2017-03-21 6 views
0

私は3つのタブを持つ主なアクティビティを持っています.3つのタブには、JSONHttpリクエストとVolleyを使ってデータをフェッチする際にリサイクルビューが表示されます。しかし、問題は、初めてデータを取得したときにデータが取り込まれるということです。しかし、あるタブから別のタブに切り替えるときに、データを再度取得する方法(リフレッシュするなど)を見つけることができません。ユーザーがタブを切り替えるときにページフラグメントを動的に更新するにはどうすればよいですか?

私がやっている何のスニペットは以下の通りです:

public class MainActivity extends AppCompatActivity { 
    // Class name TAG to be used for logging 
    private static final String TAG = MainActivity.class.getSimpleName(); 

    // Variables 
    private User user; 
    private static ArrayList<> items; 
    private Fragment Fragment1, Fragment2; 

    private SectionsPagerAdapter mSectionsPagerAdapter; 
    private ViewPager mViewPager; 

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); 
     setSupportActionBar(toolbar); 
     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the activity. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(mViewPager); 

     user = getIntent().getParcelableExtra("USER"); 
     fetchItems(); 
     mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){ 
      @Override 
      public void onPageSelected(int position) { 
       Log.d("Main", "Switching tab"); 

       // Update the view 
       super.onPageSelected(position); 
      } 
     }); 

    } 

public void fetchJobs(){ 
     items = new ArrayList<>(); 

JsonArrayRequest getItems = new JsonArrayRequest(Request.Method.GET, url + "items.json?", null, new Response.Listener<JSONArray>() { 
@Override 
public void onResponse(JSONArray o) { 
// Get JSon from Http request, this code works fine.. 
// items array is populated with the desired response 
        mSectionsPagerAdapter.notifyDataSetChanged(); 
.... 

} 

私はそれが新しいエントリを再作成されませんリストを更新するタブに切り替えたときに、私は()fetchItemsを呼び出した場合。

答えて

0

はviewPagerのそれぞれの子フラグメントで

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     //Do what you want to do here 
    } 
} 

を使用してみてください、そうするたびに、フラグメントは、それが呼び出されますviewpagerに示されています。必要な変更を加えることができます。ありがとうございますwokr注意してください。

関連する問題