Тип "GroupExpandedEventArgs" уже содержит определение для "P0" Java-привязок Xamarin для Thoughtbot ExpandableRecyclerView
Я пытаюсь создать привязки 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
?
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>