Я использую recyclerView и загружаю данные из базы данных. Элемент recyclerView имеет 2 кнопки. RecyclerView загружается отлично, а клики работают нормально для следующего кода.recyclerView ClickListener возвращает null после notifyDataSetChanged()
allData=db.getCatData(CATEGORYLIST_CIDD,1);
textlistadapter = new TextListAdapter(getActivity(), allData);
recyclerView.setAdapter(textlistadapter);
позже я переставить адаптер данных для отображения данных в порядке убывания с использованием этого кода
db=new DatabaseHandler(getActivity().getApplicationContext());
allData=db.getCatData(CATEGORYLIST_CIDD,order_id);
textlistadapter = new TextListAdapter(getActivity(), allData);
recyclerView.setAdapter(textlistadapter);
textlistadapter.notifyDataSetChanged();
Теперь элементы переставить на recyclerView, но onShareButtonClickListener возвращает нуль, вот код адаптера.
private OnShareButtonClickListener onShareButtonClickListener;
public interface OnShareButtonClickListener {
void onItemClick(View view, Pojo obj, int position);
}
public void setOnShareButtonClickListener(final OnShareButtonClickListener onShareButtonClickListener) {
this.onShareButtonClickListener = onShareButtonClickListener;
}
защелкивающийся код слушателя здесь
holder.bt_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Snackbar.make(view, "Share Clicked", Snackbar.LENGTH_SHORT).show();
if (onShareButtonClickListener != null) {
onShareButtonClickListener.onItemClick(view, c, position);
}
}
});
Клик не работает, так как onShareButtonClickListener равна нулю.
Тот же код работает хорошо в первый раз, и как только я меняю порядок, события кликов не работают, все остальные функции работают хорошо.
Получил подсказку, но я не могу понимать это. «в refreshData вы создаете новый экземпляр адаптера, когда вы создаете новый экземпляр, все данные будут сброшены, не создавайте новый экземпляр и просто не обновляйте свои данные и не вызывайте notifyDataSetChange« –