在我的应用程序中,我有一个列表活动,在其中您可以检查列表中的多个项目,如何在下次打开列表活动时检查选中的项目?我认为这样做的方法是使用getview,但我不知道如何在我的课程中实现它,因为我没有使用自定义listadapter,如果有人能告诉我这将是多么伟大
以下是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.Linq;
namespace BoostITAndroid
{
[Activity(Label = "My Activity")]
public class Selector : ListActivity
{
int[] numlist = new int[45];
String[] Options;
int[] OptionsID;
String item;
int counter = 0;
Button save, cancel;
int vehicleId;
int category;
private List<AvailableFeatures> list;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
List<Makes> listmakes = VehicleAssetsDB.GetMakes();
Options = new String[listmakes.Count];
OptionsID = new int[listmakes.Count];
Options = listmakes.Select(Makes => Makes.Make).ToArray();
OptionsID = listmakes.Select(Makes => Makes.ID).ToArray();
ListAdapter = new ArrayAdapter<String>(this, Android.Resource.Layout.SimpleListItem1, Options);
}
}
}
下面是我的onclicklistener
protected override void OnListItemClick(ListView l, View v, int position, long id)
{
l.ChoiceMode = ChoiceMode.Multiple;
Android.Util.SparseBooleanArray checkedItems = l.CheckedItemPositions;
if (!checkedItems.Get(position))
{
l.SetItemChecked(position, false);
}
if (checkedItems.Get(position))
{
l.SetItemChecked(position, true);
}
}
答案 0 :(得分:2)
如果您希望复选框保留其状态,则必须将其保存在持久存储中的某个位置。根据复选框的用途,您可以将状态存储在SharedPreferences中,也可以创建SQLite DB并将值存储在那里。
无论哪种方式,您可能需要一个自定义适配器来显示您的列表,并根据每个状态的保存状态设置复选框状态。
有关详细信息,请参阅此处= http://developer.android.com/guide/topics/data/data-storage.html
希望有所帮助。