Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道在ListView Xamarin表单中点击或选择了哪一行_Xamarin_Xamarin.forms - Fatal编程技术网

如何知道在ListView Xamarin表单中点击或选择了哪一行

如何知道在ListView Xamarin表单中点击或选择了哪一行,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我是Xamarin的新手。我有一个关于Xamarin形式的ListView的问题。 我如何知道每次在listView中单击(或选择)选项卡时是哪一行或索引?下面是我尝试过的代码,但是e.SelectedItem没有显示任何内容。谢谢你的帮助 listView.ItemSelected += async (sender, e) => { if (e.SelectedItem == null) return; // don't do anything if we just de-se

我是Xamarin的新手。我有一个关于Xamarin形式的ListView的问题。 我如何知道每次在listView中单击(或选择)选项卡时是哪一行或索引?下面是我尝试过的代码,但是e.SelectedItem没有显示任何内容。谢谢你的帮助

listView.ItemSelected += async (sender, e) => {

    if (e.SelectedItem == null) return; // don't do anything if we just de-selected the row

    await DisplayAlert("Tapped", e.SelectedItem + " row was selected", "OK");

    ((ListView)sender).SelectedItem = null; // de-select the row
};

我找到了如何查找该行索引的解决方案。:)

listView.ItemSelected+=async(发送方,e)=>{
if(e.SelectedItem==null)return;//如果我们只是取消选择该行,则不要执行任何操作
Person=(Person)e.选择编辑项;
int指数=-1;
for(int i=0;i
我有一个列表视图,单击后我必须转到详细信息视图页面。下面是我使用的代码

listView.ItemSelected += async (sender, e) =>
            {
                if (e.SelectedItem == null)
                {
                    // don't do anything if we just de-selected the row
                    return;
                }
                else
                {
                    Resource resource = e.SelectedItem as Resource;
                    listView.SelectedItem = null;
                    await Navigation.PushAsync(new ResourceDetails(resource));
                }
            };
在您的情况下,我将修改代码如下:

listView.ItemSelected += async (sender, e) => {

    if (e.SelectedItem == null) return; // don't do anything if we just de-selected the row

    await DisplayAlert("Tapped", (e.SelectedItem as YourDataType).Name + " row was selected", "OK");

    ((ListView)sender).SelectedItem = null; // de-select the row
};

一个更简单、更快的解决方案是在ItemSource上使用IndexOf——在您的例子中是“people”


这将删除for循环

e。SelectedItem将返回行数据。您在ItemSource中使用了什么?谢谢,我找到了解决方案。我以前是iOS开发人员,尝试使用Xamarin表单编程。在iOS中,我可以获取行的索引,以便从中获取数据。但在Xamarin格式中,它本身返回行数据。非常方便。也许您可以添加在答案部分找到的解决方案。如果列表包含重复项,则可能不正确。如果列表包含重复项,则将无法正常工作。
listView.ItemSelected += async (sender, e) => {

    if (e.SelectedItem == null) return; // don't do anything if we just de-selected the row

    await DisplayAlert("Tapped", (e.SelectedItem as YourDataType).Name + " row was selected", "OK");

    ((ListView)sender).SelectedItem = null; // de-select the row
};
int index = people.IndexOf(person);