【发布时间】:2017-11-27 09:59:36
【问题描述】:
我正在做一个简单的测试,因为我需要了解 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();
}
}
}
【问题讨论】:
-
你试过OnResume方法吗?
-
一周中的日子仍然存在,因为当您轮换时会调用 onStart;您需要将新项目保存在
onSaveInstanceState中。请参阅developer.android.com/guide/components/activities/…“保存和恢复活动状态”部分 -
感谢您指出这一点。我可以看到还有很多其他有趣的东西需要学习。模型视图模型视图“东西”也很有趣。谢谢!
标签: c# android listview xamarin xamarin.android