因此,我有一个活动,其中有2个片段,一个片段包含firebase的数据,在活动内部,我有一个自定义对话框,用于使用rangeseekbar
库对价格进行排序。我想做的是,如果我单击自定义对话框上的“是”按钮,将刷新片段中的recyclerview
并按照我知道如何使用firebase中的方法对数据进行排序的方式对其中的数据进行排序{ {1}}和startAt
答案 0 :(得分:0)
在片段中写一个对数据进行排序并从您的活动中调用方法的公共方法。
在您的Fragment
public void yourMethodName(){
//sort Code
}
在您的Activity
ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.yourMethodName();
OR
ExampleFragment fragment = (ExampleFragment)fm.findFragmentByTag("yourTag");
fragment.yourMethodName();
答案 1 :(得分:0)
// 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
}
}
答案 2 :(得分:0)
我建议您这样做
recyclerView.setAdapter(adapter)
在您的主线程中,如onCreate中的,由于您没有显示recyclerview所需的数据,因此您必须先使用虚拟数据对其进行设置,或者更可取的是,不显示它,而是显示首先会显示一个进度条,告诉用户尚未完成加载。
对数据进行排序后,您可以致电
adapter.notifyDataSetChanged().