当前位置: 首页 > 面试题库 >

如何使用listview.GetItemAtPosition(e.Position)获取用户单击的ListView项目的数据?

松茂实
2023-03-14
问题内容

在Xamarin.Android应用程序中,我有一个以前填充的ListView。在正确触发的listview_ItemClick事件处理程序中,我想检索单击的listview-
item视图的文本,以便在AlertDialog中显示有关它的一些信息。

我的代码无法正常工作,因为我所能得到的只是一个Java.Lang.Object(lvItem),而且我不知道如何从中提取所需的视图。

private void lv_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {

    lvItem = lv.GetItemAtPosition(e.Position);
    // lvItem is a Java.Lang.Object

    Toast.MakeText(this,  + "you clicked" + lvItem, ToastLength.Long).Show();
}

如果我这样运行,Toast将打印:

您单击了System.Collections.Generic.Dictionary‘2 [System.String,System.String]

请注意,每个ListView行都由两个TextView组成,我通过将List传递List<Dictionary<string,string>>给ListView
Adapter构造函数来填充ListView 。

简单地说:

列表显示

| textView1 | textView2 | -–>项目1

| textView1 | textView2 | ->第2项

如果用户单击ListView的item2,则需要检索项目2的textView1.Text或textView2.Text。

我还考虑过这样做:

FindViewById<TextView>(resultsListView.GetItemIdAtPosition(e.Position);

但是适配器GetItemIdAtPosition返回的是long类型而不是int类型,因此我不确定它是否是同一类型的ID。

以下内容也不起作用(我认为是相同的lv.GetItemAtPosition(e.position)

lv.Adapter.GetItem(e.Position);

问题答案:

也许有这样的事情?

lvItem = lv.GetItemAtPosition(e.Position);

尽管我不确定它是否可以与Java对象一起使用,但是也许可以借助此线程来强制转换该对象?https://forums.xamarin.com/discussion/7894/how-
to-convert-a-type-to-java-lang-
object

Java.Lang.Object 转换为 C#

public static class ObjectTypeHelper
{
    public static T Cast<T>(this Java.Lang.Object obj) where T : class
    {
        var propertyInfo = obj.GetType().GetProperty("Instance");
        return propertyInfo == null ? null : propertyInfo.GetValue(obj, null) as T;
    }
}


 类似资料:
  • 这是我的listview点击事件: 这是我的按钮点击事件: 现在,我需要获得单击的listview项的位置。我已经声明了全局位置,但这总是给我位置1。 有人能告诉我怎么得到这个职位吗?

  • 对于每道菜,我都有一个输入来指定菜的数量,但是如何将它转换为DishQuantityMap?其中firstInteger-dishId,second-订购的菜肴数量。 我知道我的代码中缺少th:字段,这是因为我不知道如何正确地实现它。

  • public class应答扩展AppCompattivity{ }

  • 我为listview的每个项目都有按钮。单击按钮时,它必须获取相应listview项的值。 下面是我的getView方法。 我调用按钮如下在我的代码... 但我得到空指针异常,而这样做。我怎样才能解决这个问题? 下面是我的日志 com.vaighai.fragments.MyOrdersFragment$2$1.onClick(MyOrdersFragment.java:253)上的java.la

  • 问题内容: 假设此页面的代码: 会话托管bean的代码: 在(1)中,我想获取用户单击的元素的ID。我可以在lstIdSelectedItems数组列表中看到用户选择的所有元素的ID,但是如何获取用户单击的元素的ID? 我试图在selectManyCheckbox内使用f:attribute标记,但是当在支持的bean中调用ajax侦听器方法时,该属性不在组件映射中。我已经用过了,但是不起作用:

  • 当存在依赖关系时,在ivy.xml中定义,例如: 在构建中.xml,我让常春藤检索它。然后,它会下载一个名称中包含版本 ID 的文件。例如,库/我的包-6.0.0.zip 我如何知道版本(6.0.0)或我的ANT构建中的全名,而不用手动/去重复ivy.xml中的版本? 我希望能够做这样的事情: