Android - установите флажок в «Custom ListView», используя Boolean - PullRequest
0 голосов
/ 28 мая 2018

У меня есть собственное представление списка в моем приложении на C # для Android, каждая строка содержит текстовое представление, ImageView и флажок.При щелчке элемента Listview я хочу установить флажок элемента строки, используя значение bool.

MainActivity.cs

List<TableList> list = = new List<TableList>();
list.Add(new TableList("Germany"));
list.Add(new TableList("France"));
list.Add(new TableList("Finland"));
listView.ItemClick += delegate (object sender, AdapterView.ItemClickEventArgs e)
    {
        string selected = t.Name;
        if (selected == "France")
        {
             Class1.bl = false; // Check the proper checkbox for France row
        }
    };

Class1.bl - статический публичный бул, установленный на true

ListAdapter и ListClass для Listview:

public class ListAdapter : BaseAdapter<TableList>
{
List<TableList> items;
Activity context;
public ListAdapter(Activity context, List<TableList> items)
    : base()
{
    this.context = context;
    this.items = items;
}
public override long GetItemId(int position)
{
    return position;
}
public override TableList this[int position]
{
    get { return items[position]; }
}
public override int Count
{
    get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
    var item = items[position];
    View view = convertView;
    if (view == null) // no view to re-use, create new
        view = context.LayoutInflater.Inflate(Resource.Layout.CoinList, null);
    view.FindViewById<TextView>(Resource.Id.CoinName).Text = item.Name;
     view.FindViewById<ImageView>(Resource.Id.imageView1).SetImageResource(Resource.Drawable.n);

    if (Class1.bl == false)
        {
            view.FindViewById<CheckBox>(Resource.Id.checkBox1).Checked = true;
            Class1.bl = true;
        }
        else
        {
            view.FindViewById<CheckBox>(Resource.Id.checkBox1).Checked = false;
        }
    return view;
  }
 }
public class TableList
{
public string Name;
public TableList(string Name)
{
    this.Name = Name;
}
}

Приведенный выше код, когда я запускаю его и выбираю Францию, ChechBox проверяется для Франции, но когда я проверяю другой элемент, такой как ГерманияChechBox для Германии не проверяется.Почему это так и как я могу это решить?

1 Ответ

0 голосов
/ 30 мая 2018

Я добавил bool в ваш TableList класс:

//I add the bool in this class, so you can change the CheckBox's state by your Data Source
//That means that your CheckBox's state based upon your Data Source.
public class TableList : Java.Lang.Object
{
    public TableList(string name, bool b)
    {
        this.Name = name;
        this.bl = b;
    }
    public string Name { get; set; }
    public bool bl { get; set; }
}

Я также предоставляю демо на github , и здесь - это результатGIF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...