Как выбрать человека из списка переработчиков и отправить его на мероприятие - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю над приложением, которое контролирует задачи.Я должен выбрать человека из списка, чтобы быть обработчиком задачи.Я сделал TextView, который при щелчке открывает DialogFragment, который содержит обзор повторного использования.Как я могу выбрать человека из реселлера ViewView и отправить его обратно в деятельность.Я пытался работать с интерфейсами, но это еще не сработало.

Ниже приведены DialogFragment и MainActivity:

AlertDialogFragment

RecyclerView recyclerViewPersons;
List<PERSON> personList = new ArrayList<>();
PersonsAdapter personsAdapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.dialog_persons_list, container);


    recyclerViewPersons = v.findViewById(R.id.recyclerViewPersons);


    recyclerViewPersons.setLayoutManager(new  LinearLayoutManager(this.getActivity()));
    personsAdapter = new PersonsAdapter(getActivity());
    personsAdapter.setData(personList);
    recyclerViewPersons.setAdapter(personsAdapter);

    return v;
}


public void setAdapterData(List<PERSON> personList) {
    this.personList = personList;
}

}

MainActivity

PersonsAdapter personsAdapter;
final FragmentManager fragmentManager = getSupportFragmentManager();
final AlertDialogFragment alertDialogFragment = new AlertDialogFragment();

protected void onCreate(Bundle savedInstanceState) {

txtPersons.setOnClickListener(v -> {

        alertDialogFragment.setAdapterData(personList);
        alertDialogFragment.show(fragmentManager, "dialog recycler");


    });

}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы сказали, что вам удалось отправить данные из адаптера в DialogFragment.Теперь вы можете отправить эти данные из DialogFragment в Activity.

Для этого вы можете создать другой интерфейс внутри или снаружи DialogFragment.Затем вы можете реализовать этот фрагмент с помощью действия и переопределить этот интерфейс своим телом.

Теперь внутри DialogFragment переопределите метод onAttach и создайте экземпляр этого экземпляра нижнего интерфейса.

Interface

public interface OnMyInterface {
    public void onMyData(your data);
}

DialogFragment

private OnMyInterface onMyInterface;

public ForgotAndResetPasswordFragment() {}

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_your_layout, container, false);
}

@Override
public View onViewCreated(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //send the data to activity using on onMyInterface
    onMyInterface.onMyData(your data);
}

@Override
public void onAttach(@NonNull Context context) {
   super.onAttach(context);

   try {
      onMyInterface = (OnMyInterface) context;

   } catch (ClassCastException e) {
      throw new ClassCastException(context.toString());
   }
}

Активность

public class MyActivity implements OnMyInterface {
    @Override
    public void onMyData(your data) {
        //get this data
    }
}

Или вы можете попробовать этот подход также:https://camposha.info/source/android-data-passing-fragment-activity-via-intent

0 голосов
/ 14 февраля 2019

Сначала определите интерфейс (который отправляет персональные данные) во Fragment и дайте ему быть реализованным в Activity.

Затем определите еще один интерфейс в Recycler Adapter и дайте ему быть реализованным во фрагменте.Этот интерфейс будет получать информацию после нажатия на пункт Recycler.Вызовите этот интерфейс в макете адаптера по щелчку.

Затем, в конце концов, все данные, которые вы получите во фрагменте, передайте обратно в действие через первый интерфейс.Надеюсь, это поможет?

...