Xamarin,ListView更新

时间:2018-05-25 01:44:45

标签: android listview xamarin

我对ListVIew,Xamarin的更新有疑问。

您好。

他目前正在研究Xamarin。 我现在尝试创建的内容就像是Listview的项目更新。

有一个名为TX 1的ListView项。 当你在这里按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;
            }
        };
    }
}

我们如何做到这一点? 作为Toa​​st的结果,当前的情况改变了内容和数据。 但它并没有改变ListView所说的内容。 请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以使用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