xamarin 无法捕获选定的列表视图项

bybem2ql  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(100)

我正在尝试捕捉列表视图中点击的项目。我在这里看到的一切都是关于Xamarin表单的,我没有使用Xamarin表单。我构建了我的列表视图并显示得很好,但我不知道如何捕捉项目点击。我的构建代码:

ListView PhoneNumberList;
PhoneNumberList = FindViewById<ListView>(Resource.Id.listViewNumbers);

ListOfPhoneNumbers = new List<string>();
if (PhoneNumberData.Tables[0].Rows.Count > 0)
{
    foreach (DataRow MyDataRow in PhoneNumberData.Tables[0].Rows)
    {
        ListOfPhoneNumbers.Add(MyDataRow["FirstName"].ToString() + " " + MyDataRow["LastName"].ToString() + " " + MyDataRow["PhoneNumber"].ToString());
    }
}
else
{
    ListOfPhoneNumbers.Add("Currently there are no phone numbers available in this list
}
ArrayAdapter adapter = new ArrayAdapter(this,    Android.Resource.Layout.SimpleListItemMultipleChoice, ListOfPhoneNumbers);
PhoneNumberList.Adapter = adapter;

这段代码按预期显示姓名和电话号码,但我不知道如何检测列表视图何时被单击。

PhoneNumberList.ItemSelected += (sender, args) =>
{
    var Sel = PhoneNumberList.SelectedItem;
};

但它从来没有被调用过。我也试过:

PhoneNumberList.ItemSelected += delegate (object sender, AdapterView.ItemSelectedEventArgs args) { PhoneNumberList_ItemSelected(); };

也不会调用PhoneNumberList_ItemSelected。
我的列表视图XML:

<ListView
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="match_parent"
    android:layout_height="148.4dp"
    android:id="@+id/listViewNumbers" />

我做错什么了?

cfh9epnr

cfh9epnr1#

好了,在网上折腾了几个小时后,我终于找到了答案。这是相当简单的,我已经找到了答案,我只是形成了一个错误的语句,它让我在一个徒劳的追逐找到答案。我的更新代码:

ListView PhoneNumberList;
PhoneNumberList = FindViewById<ListView>(Resource.Id.listViewNumbers);

ListOfPhoneNumbers = new List<string>();
if (PhoneNumberData.Tables[0].Rows.Count > 0)
{
    foreach (DataRow MyDataRow in PhoneNumberData.Tables[0].Rows)
    {
        ListOfPhoneNumbers.Add(MyDataRow["FirstName"].ToString() + " " + MyDataRow["LastName"].ToString() + " " + MyDataRow["PhoneNumber"].ToString());
    }
}
else
{
    ListOfPhoneNumbers.Add("Currently there are no phone numbers available in this list
}
ArrayAdapter adapter = new ArrayAdapter(this,      Android.Resource.Layout.SimpleListItemMultipleChoice, ListOfPhoneNumbers);
PhoneNumberList.Adapter = adapter;

完全一样,现在我添加一行代码,我只是不能得到正确的(duh):

PhoneNumberList.ItemClick += PhoneNumberList_ItemClick;

最初我使用PhoneNumberList.ItemClick += PhoneNumberList_ItemClick();和它产生的错误送我去了前面提到的野鹅追逐,有去了我的生活几个小时,我永远不会回来,哈哈.

void PhoneNumberList_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
    // We now can write code here to set the checkbox in the listview to checked
    // All I got to do now is figure out how to do THAT.  Stay tuned ....
}

所以,希望这能让某人免受我给自己带来的折磨。

更新

没花多长时间就弄明白了如何设置所单击项目的checkbok,更改为下面的PhoneNumberList_ItemClick代码:

void PhoneNumberList_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
    ListView MyListView = (ListView)sender;
    if (MyListView.IsItemChecked(e.Position))
    {
        MyListView.SetItemChecked(e.Position, true);
    }
    else
    {
        MyListView.SetItemChecked(e.Position, false);
    }
}

......这就是所有人......

相关问题