尝试使用xamarin.android创建应用
我想为此创建一个列表视图,我已经创建了一个类似于下面的customTemplate
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="63dp">
<ImageView
android:src="@drawable/greenStripOnList"
android:layout_width="9dp"
android:layout_height="63dp"
android:id="@+id/taskStatus"
local:MvxBind="ImageUrl StatusColor(Flag)" />
</LinearLayout>
现在我在我的Actual ListView文件中调用上面的自定义模板,如下所示
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/background_light">
<Mvx.MvxListView
android:id="@+id/TaskListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#FFDAFF7F"
local:MvxBind="ItemsSource RecordList"
local:MvxItemTemplate="@layout/customtasklistview" />
</LinearLayout>
我创建了一个ValueConverter,它返回像
这样的Image Sourcepublic class StatusColorValueConverter : MvxValueConverter<int, string>
{
protected override string Convert(int value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string TaskStatus = string.Empty;
switch ((int)value)
{
case 1:
TaskStatus = "@drawable/greenStripOnList";
break;
case 2:
TaskStatus = "@drawable/yellowStripOnList";
break;
case 3:
TaskStatus = "@drawable/redStripOnList";
break;
default:
TaskStatus = "@drawable/greenStripOnList";
break;
}
return TaskStatus;
}
}
但我无法更改图像源......
请指导我需要改变哪些才能使其正常工作
只是想根据传递给StatusColor Converter的整数值来改变图像
感谢 阿曼
答案 0 :(得分:1)
当您在axml中使用@drawable/greenStripOnList
之类的字符串时,Android SDK工具会预处理axml(在应用程序编译之前)并获取这些字符串并将它们转换为资源的整数占位符。因此,您无法在运行时使用相同的格式字符串。
但是,MvvmCross下载缓存插件允许您使用Uri格式res:greenStripOnList
来实现类似效果 - 请参阅https://github.com/MvvmCross/MvvmCross/blob/1ec7bc5f0307595c7ae11f56727dd0e9d2a2262f/Plugins/Cirrious/DownloadCache/Cirrious.MvvmCross.Plugins.DownloadCache.Droid/MvxAndroidLocalFileImageLoader.cs#L25中的实现
或者,ImageView的DrawableName
和DrawableId
绑定伪属性 - 您可以在https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs#L105