Отправлять данные в определенный фрагмент ViewPager - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть ViewPager с динамическим количеством фрагментов.Когда пользователь вводит данные в определенный фрагмент и нажимает кнопку «отправить», метод в операции отправляет введенные данные на сервер, а затем операция получает ответ.Как правильно отправить полученные данные в определенный фрагмент?Большое спасибо!

Фрагмент:

public class ViewPagerFragment extends Fragment {

private TextView someText;
private Button sendTextButton;
private int pageId;
...
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.my_fragment, container, false);
    someText = view.findViewById(R.id.someText);
    sendTextButton = view.findViewById(R.id.sendTextButton);
    sendTextButton.setOnClickListener(v -> {
        ((MyListener)getActivity()).onSend(pageId, someText);
    });
    return view;
}
...
}

Класс активности:

public class TestActivity extends AppCompatActivity implements MyListener {

private MyViewModel myViewModel;
...
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_layout);
    ...
    myViewModel = ViewModelProviders.of(this, new ViewModelFactory(MyRepository.getInstance())).get(MyViewModel.class);

    myViewModel.sendResultResource().observe(this, data -> {
        switch (data.status) {
            case SUCCESS: {
                // how to return the result to the fragment?
                break;
            }
            case LOADING: {
                setLoading(true);
                break;
            }
            case ERROR: {
                showError(data.message);
                break;
            }
        }
    });

}

@Override
public void onSend(int pageId, String text) {
    myViewModel.sendAnswer(problemId, answers);
}

}
...

PagerAdapter:

public class MyPagerAdapter extends FragmentPagerAdapter {
private List<Data> dataList;
public MyPagerAdapter(FragmentManager fragmentManager, List<Data> dataList) {
    super(fragmentManager);
    this.dataList = dataList;
}

@Override
public int getCount() {
    return dataList.size();
}

@Override
public MyFragment getItem(int position) {
    return MyFragment.newInstance(position, dataList.get(position));
}

}

1 Ответ

0 голосов
/ 05 декабря 2018

А как насчет записи в комплекте?Что вы думаете об этом?

...