我有一个包含了报警数据的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被定义在它自己的类。对不起,如果我没有把足够的信息。我没有看到我可以如何使用任何一种解决方案。我将用更多的代码编辑我的问题。 –
真棒谢谢!它完美地解决了问题。 –