我正在RecyclerView上實施長按。當用戶長按RecyclerView時,它會顯示一個帶有刪除選項的菜單欄。現在我遇到了這種實現的兩個問題。如何在CustomAdapter中的Recycler視圖上實現LongPress?
首先,菜單欄不會覆蓋狀態欄。它彈出狀態欄上方。我所說的狀態欄是應用程序名稱所在的欄。我如何使它與狀態欄重疊?
其次,我改變了最初編寫代碼的方式,現在我正在爲不同的java文件實現回收器視圖的適配器。我將活動的上下文從片段傳遞到此適配器,但是當我長按時它顯示此錯誤。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.MenuInflater android.support.v4.app.FragmentActivity.getMenuInflater()' on a null object reference
at onCreateActionMode
這是我實現我的片段:
public ModalMultiSelectorCallback mDeleteMode = new ModalMultiSelectorCallback(mMultiSelector) {
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
super.onCreateActionMode(actionMode, menu);
getActivity().getMenuInflater().inflate(R.menu.list_item_delete, menu);
return true;
}
在onCreateView在這個片段我這樣做:
context = getActivity();
而且我發送到我的適配器用我的ArrayList:
customAdapter = new MyCustomAdapter(context, myArrayList);
在我的自定義適配器我這樣做:
public MyCustomAdapter(Context context, ArrayList<myArrayList> myArrayList) {
mContext = context;
this.myArrayList= myArrayList;
}
,並在這個適配器,我有一個名爲CustomRecyclerViewHolder一個內部類,我實現我的onLongPress
@Override
public boolean onLongClick(View v) {
((AppCompatActivity) mContext).startSupportActionMode(myFragment.mDeleteMode);
myFragment.mMultiSelector.setSelected(this, true);
return true;
}
這NullPointerException異常如上結束。任何想法爲什麼?
你在哪裏創建'mDeleteMode'? – Bryan
在我的片段類 –