我有一個包含了報警數據的recyclerview:更新由AA刷卡幫手recyclerview數據(數組列表)
我帶來了數據在主片段上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有一個函數的數據(數組列表)耳鼻喉科更新這樣的:從主報警片段被調用的時候,所以我知道的功能是確定
public void update(){
alarms.clear();
alarms.addAll(AlarmCollection.getAlarms(getActivity()));
adapter.notifyDataSetChanged();
}
此更新功能工作正常。
我的問題是功能需要,當用戶掃描發出警報,因爲它是需要從輕掃輔助類叫做:
我試圖使沒有工作得到了一個空指針報警靜態數組。
然後我試圖從輕掃助手這樣調用更新功能:
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
AlarmsFragment = new MainAlarmsFragment();
adapter.dismissAlarm(viewHolder.getAdapterPosition());
AlarmsFragment.update();
}
但我又得到一個空指針異常。
如何更新數組並從滑動幫助器類調用notifydatasetchanged?
編輯:
這是刷卡助手在上刷卡被覆蓋(這是在自己的類文件):
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;
}
在此先感謝您的幫助
感謝您的回覆。在swiped被定義在它自己的類。對不起,如果我沒有把足夠的信息。我沒有看到我可以如何使用任何一種解決方案。我將用更多的代碼編輯我的問題。 –
真棒謝謝!它完美地解決了問題。 –