ItemSelected not fired in Xamarin.Android

I am trying to develop a registration menu for the social application I'm working on. I would like the registration menu to consist of a PageViewer containing five fragments. The last three fragments contain a ListView, where the user can "check" information about himself. XML is here:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minWidth="25px"
    android:minHeight="25px"
    android:id="@+id/layoutSignupLists">
    <TextView
        android:text="Add something here"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:id="@+id/signupListDescription" />
    <ListView
        android:id="@+id/interestListView"
        android:layout_below="@id/signupListDescription"
        android:layout_height="match_parent"
        android:layout_width="match_parent" />
</RelativeLayout>

This layout is inflated when the last three fragments are created, as displayed correctly. I subscribed the delegate to the itemSelected event in the ListView, as shown below:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        //Inflate view and find content
        View view = inflater.Inflate(Resource.Layout.signupFragLayout4, container, false);
        interestListView = view.FindViewById <ListView>(Resource.Id.interestListView);
        var desc = view.FindViewById<TextView>(Resource.Id.signupListDescription);

        //Adds the description
        desc.Text = GetString(Resource.String.profile_menu_edit_interests);

        //Populate ListView
        interestListView.Adapter = new ArrayAdapter<string>(Activity, 
            Resource.Layout.CheckedListViewItem, MainActivity.InfoNames[(int)InfoType.Interest]);
        interestListView.ChoiceMode = ChoiceMode.Multiple;
        interestListView.ItemSelected +=  (object sender, AdapterView.ItemSelectedEventArgs e) => 
            {
                if(!Interests.Contains(e.Position))
                    Interests.Add(e.Position);
                else
                    Interests.Remove(e.Position);
            };

        return view;
    }

When setting the breakpoint in the delegate, I found that it never called and therefore ListView reset when scrolling to the right or left.

How can I make a fragment “hold” information so that it appears every time a fragment is shown?

+4

Source: https://habr.com/ru/post/1617944/


All Articles