Я пытаюсь удалить один элемент из своего RecyclerView с помощью OnDeleteData. но у меня есть ошибка в файле адаптера. (если я использую этот метод для Activity, все в порядке, но я изменяю свою активность на фрагменты)
Файл адаптера:
public class menuUserAdapter extends RecyclerView.Adapter<menuUserAdapter.ViewHolder> {
public interface dataListener{
void onDeleteData(Transaksi transaksi , int position);
}
dataListener listener;
public menuUserAdapter(ArrayList<Transaksi> listtransaksi, Context context) {
this.listtransaksi = listtransaksi;
//this.listuser = listuser;
this.context = context;
listener = (homeFragment) context;
}
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
holder.listitem.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(final View v) {
listener.onDeleteData(listtransaksi.get(position),position);
}
};
}
}
в файле фрагментов:
public class homeFragment extends Fragment implements menuUserAdapter.dataListener {
public void onDeleteData(Transaksi transaksi, int position) {
if (reference != null){
reference.child("transaksi").child(transaksi.getKey()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(getActivity(), "Data Berhasil Dihapus", Toast.LENGTH_SHORT).show();
}
});
}
}
}
listener = (homeFragment) context; у меня erorr на этой строке
Помогите, пожалуйста




Поскольку ваш фрагмент реализует интерфейс, инициализируйте его фрагментом, context - это контекст Activity, который содержит homeFragment.
public menuUserAdapter(ArrayList<Transaksi> listtransaksi, Context context, homeFragment fragment) {
this.listtransaksi = listtransaksi;
this.context = context;
listener = fragment;
}
в вашем фрагменте
menuUserAdapter adapter = menuUserAdapter(listtransaksi, getActivity(), this);
Надеюсь, это поможет тебе.
передать его через конструктор, например, menuUserAdapter adapter = new menuUserAdapter (listtransaksi, getActivity (), listener);
это все еще erorr, java.lang.ClassCastException: MyActivity не может быть приведен к menuUserAdapter $ dataListener
listener = (menuUserAdapter.dataListener) контекст; <<< ошибка в этой строке
Как вы создаете объект menuUserAdapter. Пожалуйста, вставьте эту часть ..
Вы не можете передать контекст слушателю, добавьте еще один параметр в свой адаптер. общедоступное менюUserAdapter (ArrayList <Transaksi> listtransaksi, контекст контекста, фрагмент homeFragment) {listener = fragment;
Я обнаружил новую ошибку, когда попробовал это, dataListener не может быть преобразован в homeFragment
Я тестировал его на своей стороне, он работает нормально, попробуйте один раз.
адаптер = новый menuUserAdapter (listtransaksi, getActivity (), listener); erorr в этой строке, я не могу запустить
забыл все это, просто передайте экземпляр фрагмента адаптеру и инициализируйте прослушиватель экземпляром фрагмента. ответ обновлен посмотрите
как это menuUserAdapter adapter = menuUserAdapter (listtransaksi, getActivity (), this);
ооо Боже, наконец .. ты мистер Шамсул за помощь мне .. Ты очень много GBU
как передать его адаптеру?