I'm using a MvxListView and trying to bind a Command to ItemClick event, but when I'm put ItemClick in local:MvxBind attribute, my app crash on open the page that contain the MvxListView. If I not use the ItemClick in local:MvxBind, the MvxListView work, but if I use ItemClick, when I open the MvxListView page, the app crash.
My page layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto/PROSPERI_EpmFast.Droid"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.05" />
<RelativeLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.9">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1">
<TextView
android:id="@+id/headerTxtViewName"
android:text="@string/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="left"
android:layout_weight="0.3"
android:textColor="@color/epmfast_vermelho" />
<TextView
android:id="@+id/headerTxtViewStartDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/startDate"
android:gravity="left"
android:layout_weight="0.25"
android:textColor="@color/epmfast_vermelho" />
<TextView
android:id="@+id/headerTxtViewFinishtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/finishDate"
android:gravity="left"
android:layout_weight="0.2"
android:textColor="@color/epmfast_vermelho" />
<TextView
android:id="@+id/headerTxtViewComplete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/complete"
android:gravity="left"
android:layout_weight="0.01"
android:textColor="@color/epmfast_vermelho" />
</LinearLayout>
<View
style="@style/Divider" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayout2">
<Mvx.MvxListView
android:id="@+id/lstViewTasks"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="1px"
android:clickable="true"
android:focusableInTouchMode="true"
android:choiceMode="singleChoice"
android:layout_alignParentTop="true"
local:MvxBind="ItemsSource Tasks, Mode=TwoWay; SelectedItem SelectedTask; ItemClick ItemClickCommand; "
local:MvxItemTemplate="@layout/projectmytasksitem" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.05" />
</LinearLayout>
My ListItem layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto/PROSPERI_EpmFast.Droid"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/paddingDefaultItem"
android:paddingTop="@dimen/paddingDefaultItem">
<TextView
android:id="@+id/txtViewNameValue"
android:text="tarefa 1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Text Name"
android:gravity="left"
android:layout_weight="0.18"
android:textSize="@dimen/fontDefaultMicro" />
<TextView
android:id="@+id/txtViewStartDateValue"
android:text="01/01/1111"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Text StartDate, Converter=DateTimeToString"
android:gravity="left"
android:layout_weight="0.18"
android:textSize="@dimen/fontDefaultMicro" />
<TextView
android:id="@+id/txtViewFinishtDateValue"
android:text="01/01/1111"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Text FinishDate, Converter=DateTimeToString"
android:gravity="left"
android:layout_weight="0.2"
android:textSize="@dimen/fontDefaultMicro" />
My Activity:
public class ProjectMyTasksView : MvxActivity
{
public new ProjectMyTasksViewModel viewModel
{
get { return (ProjectMyTasksViewModel)base.ViewModel; }
set { base.ViewModel = value; }
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
this.SetContentView(Resource.Layout.ProjectMyTasksView);
}
}
My ViewModel:
public class ProjectMyTasksViewModel : MvxViewModel
{
#region [Atributos privados]
private ProjectService _service;
#endregion
#region [Propriedades]
private IList<Task> _tasks;
public IList<Task> Tasks
{
get { return _tasks; }
set { _tasks = value; RaisePropertyChanged(() => Tasks); }
}
private bool _isListaVazia;
public bool IsListaVazia
{
get { return _isListaVazia; }
set { _isListaVazia = value; RaisePropertyChanged(() => IsListaVazia); }
}
private Task _selectedTask;
public Task SelectedTask
{
get { return _selectedTask; }
set { _selectedTask = value; RaisePropertyChanged(() => SelectedTask); }
}
private string _mensagemErro;
public string MensagemErro
{
get { return _mensagemErro; }
set { _mensagemErro = value; RaisePropertyChanged(() => MensagemErro); }
}
#endregion
#region [Commands]
private MvxCommand _itemClickCommand;
public MvxCommand ItemClickCommand
{
get
{
_itemClickCommand = _itemClickCommand ?? new MvxCommand(ExecuteItemClickCommand);
return ItemClickCommand;
}
}
#endregion
#region [Construtores]
public ProjectMyTasksViewModel()
{
_service = new ProjectService();
this.CriaListaTeste();
IsListaVazia = (Tasks.Count > 0) ? true : false;
}
#endregion
#region [Execuções dos Comandos]
public void ExecuteItemClickCommand()
{
var taskJson = Mvx.Resolve<IMvxJsonConverter>().SerializeObject(SelectedTask);
this.ShowViewModel<TaskViewModel>(new TaskViewModel.Parametros { TaskJson = taskJson });
}
#endregion
#region [Métodos]
public void CriaListaTeste()
{
Tasks = new List<Task>();
for (int indiceProjeto = 1; indiceProjeto <= 10; indiceProjeto++)
{
Tasks.Add(new Task { Name = $"Tarefa {indiceProjeto}", StartDate = DateTime.Now, FinishDate = DateTime.Now, IsCompleted = false });
}
}
#endregion
}
The StackTrace:
05-04 10:27:03.407 W/art (16616): JNI RegisterNativeMethods: attempt to register 0 native methods for mvvmcross.binding.droid.views.MvxListView 05-04 10:27:03.501 D/Mono (16616): Assembly Ref addref MvvmCross.Binding.Droid[0xb7205c70] -> System.Core[0xb731d880]: 8 05-04 10:27:03.538 D/Mono (16616): Assembly Ref addref MvvmCross.Platform[0xb720b670] -> System.ObjectModel[0xb7226c78]: 4 05-04 10:27:03.543 D/Mono (16616): Assembly Ref addref MvvmCross.Binding[0xb7204c50] -> System.Threading[0xb723c4b0]: 3 05-04 10:27:03.580 D/Mono (16616): Assembly Ref addref MvvmCross.Core[0xb7206b18] -> System.Threading[0xb723c4b0]: 4 05-04 10:27:03.664 E/mono-rt (16616): Stacktrace: 05-04 10:27:03.664 E/mono-rt (16616): 05-04 10:27:03.664 E/mono-rt (16616): at <0xffffffff> 05-04 10:27:03.664 E/mono-rt (16616): at (wrapper managed-to-native) object.wrapper_native_0xb4f7f4c9 (intptr,intptr,intptr,intptr,Android.Runtime.JValue*) 05-04 10:27:03.664 E/mono-rt (16616): at (wrapper delegate-invoke) .invoke_intptr_intptr_intptr_intptr_intptr_JValue* (intptr,intptr,intptr,intptr,Android.Runtime.JValue*) 05-04 10:27:03.664 E/mono-rt (16616): at Android.Runtime.JNIEnv.CallNonvirtualObjectMethod (intptr,intptr,intptr,Android.Runtime.JValue*) [0x00060] in /Users/builder/data/lanes/2970/46c3f7e0/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:612 05-04 10:27:03.664 E/mono-rt (16616): at Android.Views.LayoutInflater.Inflate (int,Android.Views.ViewGroup,bool) [0x0009f] in /Users/builder/data/lanes/2970/46c3f7e0/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Views.LayoutInflater.cs:689 05-04 10:27:03.664 E/mono-rt (16616): at MvvmCross.Binding.Droid.Views.MvxLayoutInflater.Inflate (int,Android.Views.ViewGroup,bool) 05-04 10:27:03.665 E/mono-rt (16616): at MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.CommonInflate (int,Android.Views.ViewGroup,bool) 05-04 10:27:03.665 E/mono-rt (16616): at MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup,bool) 05-04 10:27:03.665 E/mono-rt (16616): at MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup) 05-04 10:27:03.665 E/mono-rt (16616): at MvvmCross.Binding.Droid.BindingContext.MvxBindingContextOwnerExtensions.BindingInflate (MvvmCross.Binding.BindingContext.IMvxBindingContextOwner,int,Android.Views.ViewGroup) 05-04 10:27:03.665 E/mono-rt (16616): at MvvmCross.Droid.Views.MvxActivity.SetContentView (int) 05-04 10:27:03.665 E/mono-rt (16616): at PROSPERI_EpmFast.Droid.Views.Activities.ProjectMyTasksView.OnCreate (Android.OS.Bundle) [0x00009] in C:\Projetos\PROSPERI_EpmFast\PROSPERI_EpmFast.Droid\Views\Activities\ProjectMyTasksView.cs:25 05-04 10:27:03.665 E/mono-rt (16616): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/2970/46c3f7e0/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.App.Activity.cs:2707 05-04 10:27:03.666 E/mono-rt (16616): at (wrapper dynamic-method) object.fdbd2d8f-d719-4bb8-a51e-764cdabaeb71 (intptr,intptr,intptr) 05-04 10:27:03.666 E/mono-rt (16616): at (wrapper native-to-managed) object.fdbd2d8f-d719-4bb8-a51e-764cdabaeb71 (intptr,intptr,intptr) 05-04 10:27:03.666 E/mono-rt (16616): 05-04 10:27:03.666 E/mono-rt (16616): Attempting native Android stacktrace: 05-04 10:27:03.666 E/mono-rt (16616): 05-04 10:27:03.680 E/mono-rt (16616): at ???+3069880740 [0xa20db790] 05-04 10:27:03.693 E/mono-rt (16616): at ???+3069880740 [0x0] 05-04 10:27:03.703 E/mono-rt (16616): 05-04 10:27:03.703 E/mono-rt (16616): ================================================================= 05-04 10:27:03.703 E/mono-rt (16616): Got a SIGSEGV while executing native code. This usually indicates 05-04 10:27:03.703 E/mono-rt (16616): a fatal error in the mono runtime or one of the native libraries 05-04 10:27:03.703 E/mono-rt (16616): used by your application.