ListView未更新(c#)

时间:2017-11-27 09:59:37

标签: c# android listview xamarin xamarin.android

我正在做一个简单的测试,因为我需要了解ListView。我已经做了很多搜索,但是有很多搜索,但所有这些都试图做更多的事情而不仅仅是基础知识。因此,为了理解我已经完成一个简单程序并在下面列出的概念。

一切正常 - 除非我旋转手机。我知道它会破坏Activity,我需要重新创建listview和适配器。 我不明白的是 - 为什么我的字符串列表也被"销毁"。

看看我的例子 - 工作日将在轮换后出现。但点击次数列表不会!! 在我的案例中使用listview的正确方法是什么?我没有尝试复杂的行视图或自定义适配器。我将了解基础知识。 谢谢!

namespace NewListViewTest
{
    [Activity(Label = "NewListViewTest", MainLauncher = true)]
    public class MainActivity : Activity
    {
        Button StartScan;
        Button StopScan;
        TextView Filter;
        ListView IBeaconActivities;
        List<string> dataList;
        ArrayAdapter<string> dataAdapter;

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

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

            dataList = new List<string>();
        }

        protected override void OnStart()
        {
            base.OnStart();
            StartScan = FindViewById<Button>(Resource.Id.startScan);
            StartScan.Click += StartScan_Click;

            StopScan = FindViewById<Button>(Resource.Id.stopScan);
            Filter = FindViewById<TextView>(Resource.Id.filter);
            IBeaconActivities = FindViewById<ListView>(Resource.Id.beaconActivities);

            dataAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, dataList);
            IBeaconActivities.Adapter = dataAdapter;

            dataList.Add("Monday");
            dataList.Add("Tuesday");
            dataList.Add("Wednesday");
            dataList.Add("Thursday");
            dataList.Add("Friday");
            dataList.Add("Saturday");
            dataList.Add("Sunday");

            DataWasUpdated();
        }

        public void DataWasUpdated()
        {
            dataAdapter.Clear();
            dataAdapter.AddAll(dataList);

            dataAdapter.NotifyDataSetChanged();
        }

        private void StartScan_Click(object sender, System.EventArgs e)
        {
            dataList.Add("New item at: " + DateTime.Now.ToString("hh:mm:ss"));
            DataWasUpdated();
        }
    }
}

0 个答案:

没有答案