我的 monodroid UI 元素(按钮、TextView...)中的枚举需要一个 .Net 包
Posted
技术标签:
【中文标题】我的 monodroid UI 元素(按钮、TextView...)中的枚举需要一个 .Net 包【英文标题】:Need a .Net bag for my enums in my monodroid UI element (Button,TextView...) 【发布时间】:2012-10-14 19:05:52 【问题描述】:我正在尝试在我的 ListView 的自定义 ListItem 中设置按钮的标签,但需要 Java.Lang.Object 吗?在 .Net 对象世界中,此 Tag 属性似乎不合适。
所以,我需要一种方法来获取/设置一个 .Net 包到我的 UI 元素:
button.Bag=MYEnumsEnum1;
然后
MyEnums myEnum=(MyEnums)button.Bag;
可以用 monodroid 吗? 我怎样才能绕过这个问题?
【问题讨论】:
我对Monodroid一无所知,但不应该是button.Tag
吗?
否,因为它使用 Java.Lang.Object 而不是 System.Object:所以转换不可用。
我很困惑。 button.Tag
需要 Java.Lang.Object?您在问题中同时使用了Tag
和Bag
,所以不清楚。
【参考方案1】:
您可以通过继承 Java.Lang.Object 来创建一个连接到 .net 的 java 对象
所以你可以例如使用
class Thing : Java.Lang.Object
public MyEnum Value get; set;
这可以用来存储类似的东西:
button.Tag = new Thing() Value = MyEnum.Running ;
然后再次提取为:
var myEnumValue = ((Thing)button.Tag).Value;
这是我使用的一个包装器:
https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxJavaContainer.cs这用于:
用于包装列表项对象的列表适配器:https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxBindableListAdapter.cs https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/Binders/MvxBindingLayoutInflatorFactory.cs的最后一个方法中绑定属性的标签存储【讨论】:
以上是关于我的 monodroid UI 元素(按钮、TextView...)中的枚举需要一个 .Net 包的主要内容,如果未能解决你的问题,请参考以下文章