我正在绑定 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>