Распределить данные из текущей деятельности по фрагментам на ней

1

У меня есть активность с 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);
}
Теги:
android-fragments
android-activity
android-fragmentactivity

1 ответ

0

создать класс 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)
        } 
    }
}
  • 0
    Спасибо за ваш ответ, но я не понимаю, как его использовать! Я получаю объект json, в котором много объектов и массивов, и я хочу распределить его по своим фрагментам. Я просто не понимаю, как использовать этот код. как распространять и получать эти данные !? я должен использовать интант или что !?
  • 0
    Конвертируйте ваш json в Java models с помощью библиотеки Gson (создайте свои модели Java из json, используйте эту ссылку, выберите тип источника json и стиль аннотации: Gson или ничего), эта ссылка поможет вам создать модель Java из json
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню