【问题标题】:xamarin.android binding thorw 'does not implement inherited abstract member 'RecyclerView.Adapter.OnCreateViewHolder(ViewGroup, int)'xamarin.android 绑定 thorw '不实现继承的抽象成员 'RecyclerView.Adapter.OnCreateViewHolder(ViewGroup, int)'
【发布时间】:2017-08-18 10:28:04
【问题描述】:

我正在绑定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:\TempApps\ChatKitDebugBinding\ChatKitDebugBinding\obj\Debug\generated\src\Com.Stfalcon.Chatkit.Messages.MessagesListAdapter.cs(10,23,10,42): error CS0534: 'MessagesListAdapter' does not implement inherited abstract member 'RecyclerView.Adapter.OnCreateViewHolder(ViewGroup, int)'

有什么办法可以解决吗?

【问题讨论】:

    标签: c# binding xamarin.android


    【解决方案1】:

    解决此问题的最简单方法是使用部分类。您可以通过使用适当的命名空间创建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();
    }
    

    最后你可以查看source code并使用新生成的绑定类在C#中实现这些方法:

    OnBindViewHolder

    OnCreateViewHolder

    【讨论】:

      【解决方案2】:

      检查您生成的源代码。该方法实际上可能存在,但带有一个虚拟标志而不是覆盖标志。如果是这样,您可以像这样在元数据中使用 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>
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多