Android RecylerView按钮不会触发
我的回收卡上有一个按钮,用于显示Android RecylerView按钮不会触发,android,xamarin,android-recyclerview,xamarin.android,mvvmcross,Android,Xamarin,Android Recyclerview,Xamarin.android,Mvvmcross,我的回收卡上有一个按钮,用于显示弹出菜单 但是,每当用户单击此按钮时,popupMenu不会出现。甚至我在菜单选项按钮中也放置了一个断点。单击操作,它不会命中 XML格式的ImageButton <ImageButton android:id="@+id/MoreSettings" android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentRight=
弹出菜单
但是,每当用户单击此按钮时,popupMenu
不会出现。甚至我在菜单选项按钮中也放置了一个断点。单击操作,它不会命中
XML格式的ImageButton
<ImageButton
android:id="@+id/MoreSettings"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:src="@drawable/ic_more_black_24dp" />
更新:
活动.cs
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.AView, null);
HasOptionsMenu = true;
toolbar = ((MainView)Activity).SupportActionBar;
var recyclerView = view.FindViewById<MvxRecyclerView>(Resource.Id.ARecyclerView);
if (recyclerView != null)
{
recyclerView.HasFixedSize = true;
recyclerView.Adapter = new RecyclerAdapter((IMvxAndroidBindingContext)BindingContext, Activity);
var layoutManager = new LinearLayoutManager(Activity);
recyclerView.SetLayoutManager(layoutManager);
}
return view;
}
public override视图OnCreateView(布局、充气机、视图组容器、Bundle savedInstanceState)
{
忽略变量=base.OnCreateView(充气机、容器、savedInstanceState);
var view=this.BindingInflate(Resource.Layout.AView,null);
HasOptions菜单=true;
工具栏=((主视图)活动);
var recyclerView=view.findviewbyd(Resource.Id.ARecyclerView);
如果(recyclerView!=null)
{
recyclerView.HasFixedSize=true;
Adapter=new RecyclerAdapter((IMvxAndroidBindingContext)BindingContext,Activity);
var layoutManager=新的LinearLayoutManager(活动);
recyclerView.SetLayoutManager(layoutManager);
}
返回视图;
}
在您的RecyclerView.Adapter代码中,在OnBindViewHolder方法中添加单击委托时应小心。如果添加为C#匿名函数,则每次视图显示新委托时,都将添加而不是设置
首先,应将此行放置在ViewHolder构造函数方法中:
this.menuOptionsButton = view.FindViewById<ImageButton>(Resource.Id.MoreSettings);
id不同于MoreOptions
vsMoreSettings
对不起,是打字错误,我已修复并向我的问题中添加了其他信息。您是否将链接器设置为仅Sdk程序集
或Sdk和用户程序集
?链接器属性为none
@hotstring是否有RecyclerView.ViewHolder
子类?你能添加你的RecyclerAdapter.OnCreateViewHolder
override。。。。
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.AView, null);
HasOptionsMenu = true;
toolbar = ((MainView)Activity).SupportActionBar;
var recyclerView = view.FindViewById<MvxRecyclerView>(Resource.Id.ARecyclerView);
if (recyclerView != null)
{
recyclerView.HasFixedSize = true;
recyclerView.Adapter = new RecyclerAdapter((IMvxAndroidBindingContext)BindingContext, Activity);
var layoutManager = new LinearLayoutManager(Activity);
recyclerView.SetLayoutManager(layoutManager);
}
return view;
}
this.menuOptionsButton = view.FindViewById<ImageButton>(Resource.Id.MoreSettings);
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
base.OnBindViewHolder(holder, position);
var optionsButton = ((YourHolder)holder).menuOptionsButton;
// This avoids adding a Click event more than once
optionsButton.Click -= this.PopupShow;
optionsButton.Click += this.PopupShow;
}
private void PopupShow(object sender, EventArgs e)
{
Toast.MakeText(this.context, "Button clicked", ToastLength.Short).Show();
var popup = new PopupMenu(_activity, menuOptionsButton );
popup.MenuInflater.Inflate(Resource.Menu.menu,popup.Menu);
popup.Show();
}