xamarin.android binding thorw 'not 实现继承的抽象成员 'RecyclerView.Adapter.OnCreateViewHolder(ViewGroup, i



我正在绑定 github 项目 ChatKit

我做这个 xml

<attr name="managedType" path="/api/package[@name='com.stfalcon.chatkit.messages']/class[@name='MessagesListAdapter']/method[@name='onBindViewHolder']/parameter[1]">Android.Support.V7.Widget.RecyclerView.ViewHolder</attr>
<attr name="managedType" path="/api/package[@name='com.stfalcon.chatkit.messages']/class[@name='MessagesListAdapter']/method[@name='onBindViewHolder']/parameter[2]">int</attr>

但是vs仍然为我抛出错误:

1>D:TempAppsChatKitDebugBindingChatKitDebugBindingobjDebuggeneratedsrcCom.Stfalcon.Chatkit.Messages.MessagesListAdapter.cs(10,23,10,42): error CS0534: 'MessagesListAdapter' does not implement inherited abstract member 'RecyclerView.Adapter.OnCreateViewHolder(ViewGroup, int)'

有什么方法可以解决它吗?

解决此问题的最简单方法是通过分部类。为此,可以使用适当的命名空间创建部分类MessagesListAdapter

namespace Com.Your.Namespace
{
partial class MessagesListAdapter
{
}
}

接下来,您可以在此分部类中实现重写:

public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
throw new NotImplementedException();
}
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
throw new NotImplementedException();
}

最后,可以查看源代码并使用新生成的绑定类在 C# 中实现这些方法:

OnBindViewHolder

OnCreateViewHolder

检查生成的源代码。该方法实际上可能在那里,但使用虚拟标志而不是覆盖标志。如果是这样,您可以在元数据中使用 managedOverride 修复它,就像这样:您可能需要添加到这些元数据中的那些。

<attr path="/api/package[@name='com.stfalcon.chatkit.messages']/class[@name='MessagesListAdapter']/method[@name='onCreateViewHolder']" name="managedOverride">override</attr>
<attr path="/api/package[@name='com.stfalcon.chatkit.messages']/class[@name='MessagesListAdapter']/method[@name='onBindViewHolder']" name="managedOverride">override</attr>

相关内容

  • 没有找到相关文章