У меня есть активность с 2 вкладками/фрагментами. В моей деятельности у меня есть запрос JSON и получить некоторые данные из API. Как я могу распространять данные на мои вкладки, которые содержат фрагменты моей текущей деятельности после получения данных?
Код:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
mInflater = LayoutInflater.from(this);
queue = Volley.newRequestQueue(this);
picture = (Picture) getIntent().getSerializableExtra("picture");
pictureId = picture.getPictureId();
setUpUI();
getPictureDetails(pictureId);
tabLayout = findViewById(R.id.detailtabs);
viewPager = findViewById(R.id.detailviewpager);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.AddFragment(new FragmentDetails(), "Details");
adapter.AddFragment(new FragmentReviews(), "Reviews");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
создать класс interface
как показано ниже
public interface DataDistributor {
public void sendData(YOUR_DATA_TYPE data)
}
все ваши fragments
должны реализовывать этот interface
как показано ниже
public class YOUR_FRAGMENT extends Fragment implements DataDistributor {
...
@Override
public void sendData(YOUR_DATA_TYPE data){
//here you get your distributed data in fragment
}
}
у вашего adapter
должны быть instances
fragments
которые implements
interface
DataDistributor
в виде array
или List
(я предполагаю, что имя переменной экземпляра списка фрагментов в виде fragments
), просто напишите ниже method
в своем классе adapter
и вызывайте всякий раз, когда вы хотите передать свои данные фрагменты (путем вызова adapter.distibuteData(data)
из действия)
public void distributeData(YOUR_DATA_TYPE data){
if(fragments != null && !fragments.isEmpty()){
for(Fragment fragment: fragments){
((DataDistributor) fragment).sendData(data)
}
}
}
json
вJava models
с помощью библиотекиGson
(создайте свои модели Java из json, используйте эту ссылку, выберите тип источникаjson
и стиль аннотации: Gson или ничего), эта ссылка поможет вам создать модель Java из json