【问题标题】:The type 'GroupExpandedEventArgs' already contains a definition for 'P0' Xamarin Android Java Bindings for Thoughtbot ExpandableRecyclerView“GroupExpandedEventArgs”类型已经包含“P0”Xamarin Android Java Bindings for Thoughtbot ExpandableRecyclerView 的定义
【发布时间】:2017-08-07 09:01:30
【问题描述】:

我正在尝试为此库创建一个 Xamarin Android 绑定,https://github.com/thoughtbot/expandable-recycler-view

我尝试将以下内容添加到Metadata.xml

<attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview']/interface[@name='listeners.GroupExpandCollapseListener']/class[@name='models.ExpandableGroup']/field[@name='p0']" name="managedName">p0_2</attr>

但我仍然收到错误并给出 xpath 不匹配任何节点的警告。

这是我试图匹配的文件和字段:

命名空间 Com.Thoughtbot.Expandablerecyclerview.Listeners {

// Metadata.xml XPath interface reference: path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='GroupExpandCollapseListener']"
[Register ("com/thoughtbot/expandablerecyclerview/listeners/GroupExpandCollapseListener", "", "Com.Thoughtbot.Expandablerecyclerview.Listeners.IGroupExpandCollapseListenerInvoker")]
public partial interface IGroupExpandCollapseListener : IJavaObject {

    // Metadata.xml XPath method reference: path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='GroupExpandCollapseListener']/method[@name='onGroupCollapsed' and count(parameter)=1 and parameter[1][@type='com.thoughtbot.expandablerecyclerview.models.ExpandableGroup']]"
    [Register ("onGroupCollapsed", "(Lcom/thoughtbot/expandablerecyclerview/models/ExpandableGroup;)V", "GetOnGroupCollapsed_Lcom_thoughtbot_expandablerecyclerview_models_ExpandableGroup_Handler:Com.Thoughtbot.Expandablerecyclerview.Listeners.IGroupExpandCollapseListenerInvoker, ExpandableRecyclerViewBindingsLibrary")]
    void OnGroupCollapsed (global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup p0);

    // Metadata.xml XPath method reference: path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='GroupExpandCollapseListener']/method[@name='onGroupExpanded' and count(parameter)=1 and parameter[1][@type='com.thoughtbot.expandablerecyclerview.models.ExpandableGroup']]"
    [Register ("onGroupExpanded", "(Lcom/thoughtbot/expandablerecyclerview/models/ExpandableGroup;)V", "GetOnGroupExpanded_Lcom_thoughtbot_expandablerecyclerview_models_ExpandableGroup_Handler:Com.Thoughtbot.Expandablerecyclerview.Listeners.IGroupExpandCollapseListenerInvoker, ExpandableRecyclerViewBindingsLibrary")]
    void OnGroupExpanded (global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup p0);

}

public partial class GroupCollapsedEventArgs : global::System.EventArgs {

    public GroupCollapsedEventArgs (global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup p0)
    {
        this.p0 = p0;
    }

    global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup p0;
    public global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup P0 {
        get { return p0; }
    }
}

}

副本在这部分:

global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup p0;
public global::Com.Thoughtbot.Expandablerecyclerview.Models.ExpandableGroup P0 {
    get { return p0; }
}

我的问题是我的 xpath 应该是什么样子以避免P0 的重复属性定义?

【问题讨论】:

  • 您找到任何解决方案了吗,我正在尝试使用同一个库?
  • 是的,我做了,让我添加作为答案,因为 xml 很大

标签: xamarin.android java-binding


【解决方案1】:

要回答我自己的问题,在将 java 库与 Xamarin 绑定时,您需要将接口映射到 .Net 中的事件。

将以下内容添加到Metadata.xml 中会将接口映射到事件

 <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='ExpandCollapseListener']/method[@name='onGroupExpanded']/parameter[1]" name="managedName">positionStart</attr>
  <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='ExpandCollapseListener']/method[@name='onGroupExpanded']/parameter[2]" name="managedName">itemCount</attr>
  <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='ExpandCollapseListener']/method[@name='onGroupCollapsed']/parameter[1]" name="managedName">positionStart</attr>
  <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='ExpandCollapseListener']/method[@name='onGroupCollapsed']/parameter[2]" name="managedName">itemCount</attr>

  <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='GroupExpandCollapseListener']/method[@name='onGroupExpanded']/parameter[1]" name="managedName">group</attr>
  <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='GroupExpandCollapseListener']/method[@name='onGroupCollapsed']/parameter[1]" name="managedName">group</attr>

  <attr path="/api/package[@name='com.thoughtbot.expandablerecyclerview.listeners']/interface[@name='OnGroupClickListener']/method[@name='onGroupClick']/parameter[1]" name="managedName">flatPosition</attr>

【讨论】:

  • 嗨...我有同样的问题 Com.Wikitude.Tracker.IObjectTrackerListener.cs(47,47):错误 CS0102:类型“TargetsLoadedEventArgs”已经包含“p0”的定义(CS0102 ) .....我尝试添加 P0 但不工作
  • Com.Wikitude.Tracker 需要是 Java 包名,而不是 C# 命名空间。
猜你喜欢
  • 2013-06-16
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多