Как я могу обновить recyclerview из моего фрагмента внутри действия, используя пользовательский диалог?

#android #android-recyclerview #android-alertdialog

#Android #android-recyclerview #android-alertdialog

Вопрос:

Итак, у меня есть действие, в котором есть 2 фрагмента, один фрагмент содержит данные из firebase, а внутри действия у меня есть пользовательский диалог для сортировки цены с использованием rangeseekbar библиотеки. Что я хочу сделать, так это если я нажму кнопку «Да» в моем пользовательском диалоговом окне, recyclerview из фрагмента будут обновлены и отсортированы данные в нем так, как я знаю, как сортировать данные, используя метод из firebase startAt и endAt

введите описание изображения здесь

Ответ №1:

Я предлагаю вам выполнить свой

 recyclerView.setAdapter(adapter) 
  

в вашем основном потоке, как и в вашем onCreate, поскольку у вас нет данных, необходимых для отображения вашего recyclerview, вы должны либо сначала настроить его с фиктивными данными, либо, что более предпочтительно, пока не отображать его, сначала отобразить индикатор выполнения, чтобы сообщить пользователю, что загрузка еще не завершена.

после сортировки ваших данных вы можете вызвать

 adapter.notifyDataSetChanged().
  

Ответ №2:

Напишите общедоступный метод в своем фрагменте, который сортирует данные и вызывает метод из вашего действия.

В вашем Fragment

 public void yourMethodName(){
//sort Code
}
  

В вашем Activity

 ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.yourMethodName(); 
  

или

 ExampleFragment fragment = (ExampleFragment)fm.findFragmentByTag("yourTag");
fragment.yourMethodName(); 
  

Комментарии:

1. Я также попробовал этот код. но я получаю сообщение об ошибке при нулевой ссылке на объект.я также пытался с помощью getSupportFragmentManager (). но это не работает

Ответ №3:

 // You can create a call back Interface in your activity
  public interface OnSortOptionSelectedListener {
    public void onSortOptionClicked();
   }

 // Within your Activity
    OnSortOptionSelectedListener onSortOptionSelectedListener;

    Adapter adapter = new Adapter(getSupportFragmentManager());
    FragmentNameWithRecyclerView yourFragment = new FragmentNameWithRecyclerView();
    onSortOptionSelectedListener = (FragmentNameWithRecyclerView) yourFragment;
    adapter.addFragment(yourFragment, "SOME TITLE");
    viewPager.setAdapter(adapter);


  // whenever sort option is clicked
  onSortOptionSelectedListener.onSortOptionClicked();

 // Your Fragment with RecyclerView will implement this interface

    public class FragmentNameWithRecyclerView extends Fragment implements 
  OnSortOptionSelectedListener  
  {

   @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
  @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout, container, false);

    // Make sure you have the recyclerview initilialized properly here  

    return view;   
   }

   @Override
  public void onSortOptionClicked()
 {
 // Handle the logic to refresh the recyclerview here
 }

 }
  

Комментарии:

1. Что такое fragmentInstance?

2. Adapter adapter = new Adapter(getSupportFragmentManager()); FragmentNameWithRecyclerView yourFragment = new FragmentNameWithRecyclerView(); onSortOptionSelectedListener = (FragmentNameWithRecyclerView) yourFragment; adapter.addFragment(yourFragment, "SOME TITLE"); viewPager.setAdapter(adapter); Взгляните на мой обновленный ответ