- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一个带有 MvxListView 的简单布局:
<?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/LiivControl.Client.Droid"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Mvx.MvxListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="ItemsSource AutoListItems; ItemClick AutoListItemClicked"
local:MvxItemTemplate="@layout/vbmvxautoviewlistitem" />
</LinearLayout>
我的项目模板布局如下:
<?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/LiivControl.Client.Droid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="15dip">
<TextView
android:id="@+id/list_complex_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/list_complex_caption"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
我想从代码隐藏中为我的 itemtemplate 中的两个 textview 元素指定绑定(bind)。我不确定如何最好地去做。我想我可以在 MvxListView 后面的 View 代码中做一些“OnViewModelSet”。我尝试了以下但显然不起作用,因为它找不到控件。
protected override void OnViewModelSet()
{
IVbMvxAutoListViewModel vm = base.ViewModel as IVbMvxAutoListViewModel;
TextView title = this.FindViewById<TextView>(Resource.Id.list_complex_title);
this.CreateBinding(title).For(x => x.Text).To(vm.ListItemDescriptor.TitlePropName).Apply();
TextView subTitle = this.FindViewById<TextView>(Resource.Id.list_complex_caption);
this.CreateBinding(subTitle).For(x => x.Text).To(vm.ListItemDescriptor.SubTitlePropName).Apply();
base.OnViewModelSet();
}
我的另一个想法是以某种方式拦截项目模板 View 的 oncreate,但如果我为项目模板布局创建 View 代码文件,则不会调用 OnCreate。
最佳答案
要在代码中进行绑定(bind),最好:
MvxListViewItem
MvxAdapter
以返回自定义 ListView 项MvxListView
以使用自定义 MvxAdapter
没有测试过,但是这方面的代码大概是这样的:
MvxListViewItem
public class CustomListItemView
: MvxListItemView
{
public MvxListItemView(Context context,
IMvxLayoutInflater layoutInflater,
object dataContext,
int templateId)
: base(context, layoutInflater, dataContext, templateId)
{
var control = this.FindViewById<TextView>(Resource.Id.list_complex_title);
var set = this.CreateBindingSet<CustomListViewItem, YourThing>();
set.Bind(control).To(vm => vm.Title);
set.Apply();
}
}
MvxAdapter
在此覆盖 CreateBindableView
public class CustomAdapter
: MvxAdapter
{
public CustomAdapter(Context context)
: base(context)
{
}
protected override IMvxListItemView CreateBindableView(object dataContext, int templateId)
{
return new CustomListItemView(_context, _bindingContext.LayoutInflater, dataContext, templateId);
}
}
MvxListView
以使用适配器这应该很简单:
public class CustomListView
: MvxListView
{
public CustomListView(Context context, IAttributeSet attrs)
: base(context, attrs, new CustomAdapter(context))
{
}
}
只要它在您的主 UI 程序集中,它就应该可以在您的 axml 中使用:
<CustomListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="ItemsSource AutoListItems; ItemClick AutoListItemClicked"
local:MvxItemTemplate="@layout/vbmvxautoviewlistitem" />
如果 CustomListView
不在您的主 UI 程序集中,那么有一些技巧可以让 MvvmCross 在您的 Setup
中选择它 - 请参阅 Providing Custom Android在 https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup#wiki-providing-custom-views-android 中查看程序集
以上是执行此操作的最佳方法 (IMO) - 但如果您愿意,则只需在自定义适配器中应用绑定(bind)并在 OnCreate< 中设置该适配器,即可用更少的代码完成此操作
在你的 Activity
关于android - MvxListView 从代码中为模板布局创建绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21515976/
在下面的示例中,我想将 ItemClick 命令绑定(bind)到 MvxListView 中的项目。 在这里,我的 ViewModel 中有一个包含狗列表的人员列表。 ItemsSource Has
在我的 Android 应用程序中,我创建了一个垂直布局,以将图像(缩略图)的水平列表置于列表中所选图像的较大 View 之上。出于某种原因,我无法让水平列表水平显示,它只显示为垂直列表。
我想让 CustomChoiceList 与 MvvmCross 一起工作,但很难让示例正常工作,无法选择 ListItem。 事实上,该示例使用了一个自定义的 LinearLayout,它扩展了 L
我正在使用 mvvmcross(非常有趣),但在从 mvxlistview 添加和删除项目时一直遇到问题: 我的 View 绑定(bind)到从 Web 服务器检索的项目列表,因此它在不同的线程中完成
我正在使用绑定(bind)到 observablecollection 的 MvxListView 来显示聊天消息。我找到了一种方法, ListView 始终使用以下 2 个属性向下滚动到底部: an
当我从列表中删除一个项目时,MvxListView 不会刷新。 我的 list (没什么花哨的): private List items = new List(); public List Items
我有一个 MvxListView,我通过单击“添加”按钮来填充它,它运行良好。问题是当我添加项目时 ListView 的高度需要扩展。我试过设置android:layout_height="wrap_
我正在尝试在 Android 上实现类似于 iOS 的分组 ListView 。因此,我正在尝试编写自己的支持分组节标题的自定义 MvxAdapter。从 axml 构造的默认 MvxListView
如何在 MvxListView 中保持项目突出显示,直到它被取消选中或直到另一个项目被选中? 我的程序有一个 MvxListView 可以正确显示项目列表。用户可以通过单击来选择一个项目,然后单击保存
假设我有一个带有 MvxListView 的简单布局: 我的项目模板布局如下: 我想从代码隐藏中为我的 itemtemplate 中的两个 textview
是否可以嵌套绑定(bind) MvxListView(mvvmcross android v3.1 系列)? 我发现嵌套绑定(bind)失败: MvxBind:Warning: 1.17 Unabl
我正在使用一个包含 MvxSpinner 的 MvxListView。当我的应用程序运行时,跟踪显示以下几个实例: 当前微调器 SelectedItem 绑定(bind)中不允许使用空值 我知道数据对
我正在使用 Mvvmcross 在 Xamarin 中构建一个 Android 应用程序。在这个应用程序中,我需要一个 F.a.q.页面,为此我需要一个 ListView 。使用 MvxListVie
我的 MvxListView 及其绑定(bind)有问题。也就是说,如果我不添加项目模板,它绑定(bind)得很好,但在项目模板中,绑定(bind)数据不再显示。 HelpView.axml
以下布局(SearchLayoutView)中的 MvxListView 不像正常的 xamarin ListView 那样流畅。当我向下滚动列表时,项目卡住了。在这里,我将模板 (search_li
我目前正在为 Android 和 iOS 实现跨平台应用。 因为我想使用 MvvmCross 和弹出式导航,如果发现 Benjamin Hysell 的演示(使用 DrawerLayout)非常有用:
在 MvvmCross 中是否可以有一个顶部带有 Search EditText 的 Android MvxListView?以及如何? 最佳答案 在您的 View.axml 中:
如果我有一个具有以下 MvxListView 定义的 View : 不是将 MvxItemTemplate 硬编码到 itemtemplate1,是否可以根据我想在此 View 中显示的数据类型动态
我尝试添加一个带有 MvxListView 和绑定(bind)的 fragment 。我正在使用 v4.0.0.0 beta2。 这是布局: fragment : public class Acc
所以我有一张幻灯片列表: SlideListView.axml: SlideListItemView.axml: 所以每张幻灯片都有一个文本和删除按钮。 SlideListIte
我是一名优秀的程序员,十分优秀!