У меня есть фрагмент с кнопкой, которая добавляет новый элемент в RecycleView, и этот RecycleView находится в отдельном классе на адаптере.Каждый элемент в этом RecycleView имеет кнопку редактирования, которая открывает AlertDialog, в котором я редактирую элемент, и после завершения редактирования я хотел обновить фрагмент, тот же, который я хотел, когда я нажимал кнопку удаления.notifyDataSetChanged();
это не работает для меня и не будет полезно, поскольку мне нужно обновить TextView не только до RecycleView.
Я пытался вызвать метод RefreshFragment()
, но приложение вылетало.
В MyFragment.java:
public class MyFragment extends Fragment {
private MyAdapter mAdapter;
[...]
public void RefreshFragment() {
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.detach(MyFragment.this).attach(MyFragment.this).commit();
}
}
В MyAdapter.java:
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> implements Filterable{
private MyFragment my_fragment;
[...]
private void editTaskDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Edit product");
builder.setView(subView);
builder.create();
builder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final int id = productList.get(position);
final String name= Name.getText().toString();
final int price= Integer.parseInt(Price.getText().toString());
mDatabase.updateProduct(id, name, price);
//REFRESH FRAGMENT HERE
my_fragment.RefreshFragment();
}
});
builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "Canceled.", Toast.LENGTH_LONG).show();
}
});
builder.show();
}
}