Xamarin, Обновление ListView - PullRequest
0 голосов
/ 25 мая 2018

У меня вопрос об обновлении ListVIew, Xamarin.

Hello.

В настоящее время он изучает Xamarin.То, что я сейчас пытаюсь создать, похоже на обновление элемента в Listview.

Существует элемент ListView, называемый TX 1. Когда вы нажимаете здесь TX 1, TX 1 ---> TX 2 --->TX 3 ---> TX 1 Вот как мы вызываем различные события.

Вот мой код сейчас.

public class MainActivity : Activity
{
    ArrayAdapter<string> lstAdapter;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        int _Position = 0;
        string[] _Test_ListView_tow = { "TX1", "TX2", "TX3" };
        string[] _Set_RD_Data = { _Test_ListView_tow[_Position], "Display" };

        ListView _Test_ListView = FindViewById<ListView>(Resource.Id._Test_ListView);
        lstAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, _Set_RD_Data);
        _Test_ListView.Adapter = lstAdapter;


        _Test_ListView.ItemClick += (s, e) =>
        {
            switch(e.Position)
            {
                case 0:
                    if(_Position < 2)
                    {
                        _Position++;
                        _Set_RD_Data[0] = _Test_ListView_tow[_Position];
                        lstAdapter.NotifyDataSetChanged();
                        Console.WriteLine("Data : " + _Set_RD_Data[0].ToString());
                        Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
                    }
                    else if (_Position == 2)
                    {
                        _Position = 0;
                        _Set_RD_Data[0] = _Test_ListView_tow[_Position];
                        lstAdapter.NotifyDataSetChanged();
                        Console.WriteLine("Data : " + _Set_RD_Data[0].ToString());
                        Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
                    }
                    break;
            }
        };
    }
}

Как мы это делаем?Текущая ситуация, в результате которой происходит тост, меняет содержание, данные.Но это не меняет того, что говорит ListView.Пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете использовать Remove() и Insert() для обновления элемента.

Сначала измените тип _Set_RD_Data формы string[] на List<string>.Затем вы можете вызвать методы Remove() и Insert() для манипулирования данными в адаптере.Удалите _Set_RD_Data[0] из адаптера, а затем измените значение _Set_RD_Data[0].Наконец, вставьте его обратно в адаптер с индексом 0.

Вот код:

public class MainActivity : AppCompatActivity
{
    ArrayAdapter<string> lstAdapter;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);

        int _Position = 0;
        string[] _Test_ListView_tow = { "TX1", "TX2", "TX3" };
        List<string> _Set_RD_Data = new List<string>() { _Test_ListView_tow[_Position], "Display" };

        ListView _Test_ListView = FindViewById<ListView>(Resource.Id._Test_ListView);
        lstAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, _Set_RD_Data);
        _Test_ListView.Adapter = lstAdapter;

        _Test_ListView.ItemClick += (s, e) =>
        {
            switch (e.Position)
            {
                case 0:
                    if (_Position < 2)
                    {
                        _Position++;
                        lstAdapter.Remove(_Set_RD_Data[0]);
                        _Set_RD_Data[0] = _Test_ListView_tow[_Position];
                        lstAdapter.Insert(_Set_RD_Data[0], 0);
                        Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
                    }
                    else if (_Position == 2)
                    {
                        _Position = 0;
                        lstAdapter.Remove(_Set_RD_Data[0]);
                        _Set_RD_Data[0] = _Test_ListView_tow[_Position];
                        lstAdapter.Insert(_Set_RD_Data[0], 0);                            
                        Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
                    }
                    break;
            }
        };
    }
}

И результат:enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...