#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);
Взгляните на мой обновленный ответ