からrecyclerviewのためのデータ(のArrayListを)更新:は、私はアラームのデータが含まれているrecyclerviewを持つAAスワイプヘルパー
私はこのようなCREATEVIEWのメインフラグメント内のデータに持ち込む:
// Data
alarms = AlarmCollection.getAlarms(getActivity());
// Adapter
adapter = new AlarmsAdapter(getActivity(), alarms);
rv.setAdapter(adapter);
// Swipe helper
ItemTouchHelper.Callback callback = new SwipeHelper(adapter);
ItemTouchHelper helper = new ItemTouchHelper(callback);
helper.attachToRecyclerView(rv);
そして、私はmainfragmで機能を持つリサイクルビューのデータ(配列リスト)を更新する:私はまた、ユーザーがスワイプすると、このように処理するためにアラームを(破棄)をスワイプヘルパーを追加します
このアップデート機能は、メインアラームフラグメントから呼び出されたときに正常に機能するので、機能は正常です。
私の問題は、その機能は、ユーザーがアラームをオフにスワイプするとき、それが必要とされてスワイプヘルパークラスから呼び出す必要がある:
私は仕事がNULLポインタを持っていなかったアラームアレイ静的を作ってみました。
は、それから私はこのようなスワイプヘルパーから更新関数を呼び出してみました:
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
AlarmsFragment = new MainAlarmsFragment();
adapter.dismissAlarm(viewHolder.getAdapterPosition());
AlarmsFragment.update();
}
しかし、再び、私は、nullポインタ例外を取得します。
スワイプヘルパークラスから配列を更新し、notifydatasetchangedを呼び出すにはどうすればよいですか?
EDIT:
public class SwipeHelper extends ItemTouchHelper.SimpleCallback {
AlarmsAdapter adapter;
public SwipeHelper(int dragDirs, int swipeDirs) {
super(dragDirs, swipeDirs);
}
public SwipeHelper(AlarmsAdapter adapter) {
super(ItemTouchHelper.UP | ItemTouchHelper.DOWN,ItemTouchHelper.RIGHT |ItemTouchHelper.LEFT);
this.adapter = adapter;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
adapter.dismissAlarm(viewHolder.getAdapterPosition());
}
}
これはアダプタで解任関数を呼び出しますがノーを持っている:
これはスワイプには(それはそれ自身のクラスファイル内にある)オーバーライドされるスワイプヘルパーですArraylistが作成されたメインアラームフラグメントを参照してください。
これは、アダプタの私の現在のコンストラクタです:あなたの助けを事前に
public class AlarmsAdapter extends RecyclerView.Adapter<AlarmHolder>{
Context c;
ArrayList <Alarm> alarms;
ArrayList <Integer> alarmsIdsArray;
public AlarmsAdapter(Context c, ArrayList<Alarm> alarms) {
this.c = c;
this.alarms = alarms;
}
おかげ
ご回答いただきありがとうございます。オンスワイプは独自のクラスで定義されています。申し訳ありませんが、私はそこに十分な情報を入れていませんでした。私はどちらのソリューションをどのように使うことができないのか分かりません。より多くのコードで質問を編集します。 –
恐ろしいありがとう!それは完璧に直ちに問題を解決しました。 –