0
任何人都可以告訴如何實施RecyclerView上下文操作欄上的龍舌蘭ListAtem選擇上xamarin android?在Xamarin android中使用RecyclerView的Contextual Action Bar?
任何人都可以告訴如何實施RecyclerView上下文操作欄上的龍舌蘭ListAtem選擇上xamarin android?在Xamarin android中使用RecyclerView的Contextual Action Bar?
任何人都可以告訴如何實現RecyclerView上下文動作欄上的ListItem選擇上的長龍的android xamarin?
以Xamarin Official RecyclerViewer例如,你可以按照下面的步驟來實現對recyclerview上下文操作欄:
爲你的動作條創建一個簡單的菜單資源(Resource/menu/ContextualMenu
):
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/itemOneId"
android:title="Item One"/>
<item android:id="@+id/itemTwoId"
android:title="Item Two" />
</menu>
創建班級(MyActionMode
)器具ActionMode.ICallBack
:
public class MyActionMode : Java.Lang.Object, ActionMode.ICallback
{
private Context mContext;
public MyActionMode(Context context)
{
mContext = context;
}
public bool OnActionItemClicked(ActionMode mode, IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.itemOneId:
// do whatever you want
return true;
case Resource.Id.itemTwoId:
// do whatever you want
return true;
default:
return false;
}
}
public bool OnCreateActionMode(ActionMode mode, IMenu menu)
{
mode.MenuInflater.Inflate(Resource.Menu.ContextualMenu, menu);
return true;
}
public void OnDestroyActionMode(ActionMode mode)
{
mode.Dispose();
}
public bool OnPrepareActionMode(ActionMode mode, IMenu menu)
{
return false;
}
}
在PhotoViewHolder
修改構造函數接受長按操作:
public PhotoViewHolder (View itemView, Action<int> listener,Action<object,View.LongClickEventArgs> longClickListener)
: base (itemView)
{
// Locate and cache view references:
Image = itemView.FindViewById<ImageView> (Resource.Id.imageView);
Caption = itemView.FindViewById<TextView> (Resource.Id.textView);
// Detect user clicks on the item view and report which item
// was clicked (by position) to the listener:
itemView.Click += (sender, e) => listener (base.Position);
ItemView.LongClick +=(sender,e)=> longClickListener(sender,e);
}
修改PhotoAlbumAdapter
這樣的:
public class PhotoAlbumAdapter : RecyclerView.Adapter
{
...
// add this variable
private Activity mActivity;
//
private MyActionMode mActionMode;
...
// add this constructor
public PhotoAlbumAdapter(PhotoAlbum photoAlbum, Activity activity)
{
mPhotoAlbum = photoAlbum;
mActivity = activity;
}
//add this function
void OnLongClick(object sender, View.LongClickEventArgs args)
{
mActionMode = new MyActionMode(mActivity);
mActivity.StartActionMode(mActionMode);
((View)sender).Selected = true;
return;
}
...
}
在MainActivity
變化PhotoAlbumAdapter
創建以使用新創建構造函數:
mAdapter = new PhotoAlbumAdapter (mPhotoAlbum,this);
非常感謝您的詳細解釋,您的答案解決了我的問題,並非常感謝您回覆@正確的時間:) – Divya
夏你能告訴我如何從上下文按鈕動作中刪除recyclerview列表項嗎? – Divya
你可以打開另一個關於這個的問題,以便每個人都可以通過谷歌找到它。 –