Передача данных из адаптера в его собственную деятельность, а не в другую деятельность - PullRequest
0 голосов
/ 27 октября 2018

У меня есть действие, содержащее горизонтальное представление recyclerView, которое работает нормально, и ниже приведены некоторые текстовые представления, которые мне нужно установить, щелкая по каждому элементу в этом recyclerView.Я сделал это с помощью намерения отправить «позицию элемента» из адаптера и перезапустить всю активность, чтобы получить связанную информацию с этой позиции, но это стоит мне отправить еще один избыточный запрос на сервер во время перезапуска активности.Любой альтернативный подход к этому?Вот некоторые части кода: в UserActivity:

 if (userViewModel.getStatus().equals("SUCCESS")) {
                    viewHolder.rView.setItemAnimator(new DefaultItemAnimator());
                    viewHolder.rView.setAdapter(new AddFormsListAdapter(
                            userViewModel.getResult(), R.layout.item_rv_request, MyApplication.getAppContext()));
                    intent = getIntent();
                    if (intent != null) {
                        Bundle extras = intent.getExtras();
                        if (extras != null) {
                            int position = extras.getInt("ITEM_POSITION");
                            viewHolder.tvCity.setText(userViewModel.getResult().get(position).getCity());
                        }
                    }

и в адаптере:

 holder.setItemClickListener(new ListItemClickListener() {
        @Override
        public void onClick(View view, int position, boolean isLongClick) {
            Intent intent = new Intent(context, UserAddRequestActivity.class);
            intent.putExtra("ITEM_POSITION", position);
            context.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
            ((UserAddRequestActivity) view.getContext()).finish();

        }
    });

1 Ответ

0 голосов
/ 27 октября 2018

Добавьте внутренний класс следующим образом, затем измените нужные элементы в основном классе без перезагрузки с параметрами

class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.MyViewHolder> {
.........
.......

@Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
     dochanges u want in main class
}

}
...