【发布时间】:2017-05-03 10:40:35
【问题描述】:
这是我在 Xamarin for Android 中的第一个应用程序。我想从两个屏幕开始:
- 第一个(主)屏幕有 3 个按钮:加载任务编号 1、加载任务编号 2、显示任务列表,
- 按下第一个或第二个按钮后,项目将添加到第二个屏幕的列表中,
- 按下第三个按钮后,将打开带有任务列表的第二个屏幕。
但我对 ListView 有疑问。例如:我想将第一个任务添加到 ListView,回到第一个屏幕,添加第二个任务(第一个任务应该已经在列表中),回到第一个屏幕,按钮显示第二个屏幕,两个任务应该已经存在。
主要活动:
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button addButton1 = FindViewById<Button>(Resource.Id.AddButton1);
Button addButton2 = FindViewById<Button>(Resource.Id.AddButton2);
Button downloadsScreen = FindViewById<Button>(Resource.Id.DownloadsScreen);
var intent = new Intent(this, typeof(Downloads));
addButton1.Click += (object sender, EventArgs e) =>
{
intent.PutExtra("downloads", "wartosc1");
StartActivity(intent);
};
addButton2.Click += (object sender, EventArgs e) =>
{
intent.PutExtra("downloads", "wartosc2");
StartActivity(intent);
};
downloadsScreen.Click += (object sender, EventArgs e) =>
{
StartActivity(intent);
};
}
}
有任务的活动:
public class Downloads : ListActivity
{
Dictionary<string, Task> zadania = new Dictionary<string, Task>();
List<string> listaZadan = new List<string>();
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
ArrayAdapter<string> lista = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, listaZadan);
}
protected override void OnStart()
{
var download = Intent.GetStringExtra("downloads") ?? null;
Task zadanie = new Task();
EncryptAndDecrypt decryption = new EncryptAndDecrypt();
zadanie = JsonConvert.DeserializeObject<Task>(decryption.Decrypt(download, "haslo"));
if (!zadania.ContainsKey(zadanie.Name))
{
zadania.Add(zadanie.Name, zadanie);
listaZadan.Add(zadanie.Name);
}
else
new AlertDialog.Builder(this).SetMessage("Zadanie zostało już dodane do pobierania").Show();
}
}
我该如何解决?这样的列表是显示下载文件的好方法吗?将来我想将 ProgressBar 添加到 ListView 中的每个项目。请不要发送教程的链接,我都看到了。我关心来自与它打交道的人的信息。
【问题讨论】:
标签: c# android listview xamarin