如何获取用户点击listview.GetItemAtPosition(e.Position)的ListView项的数据?
How to get the data of a ListView item the user has clicked on with listview.GetItemAtPosition(e.Position)?
在 Xamarin.Android 应用程序中,我有一个我之前填充的 ListView。
在正确触发的 listview_ItemClick 事件处理程序中,我想检索单击的列表视图项视图的文本,以便在 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 会打印:
you clicked System.Collections.Generic.Dictionary'2[System.String,
System.String]
请注意,每个 ListView 行都由两个 TextView 组成,我通过将 List<Dictionary<string,string>>
传递给 ListView 适配器构造函数来填充 ListView。
简单来说:
LISTVIEW
|文本视图1 |文本视图2 | ---> 项目 1
|文本视图1 |文本视图2 | ---> 项目 2
如果用户点击 ListView 的 item2,我需要检索 item 2 的 textView1.Text 或 textView2.Text。
我也想过做:
FindViewById<TextView>(resultsListView.GetItemIdAtPosition(e.Position);
但是 Adapter GetItemIdAtPosition returns 是 long 而不是 int,所以我不确定它是同一种 Id。
以下也不起作用(我认为它与 lv.GetItemAtPosition(e.position)
相同:
lv.Adapter.GetItem(e.Position);
试试这个可能会有帮助
void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
var listView = sender as ListView;
var t = tableItems[e.Position];
Android.Widget.Toast.MakeText(this, t.Heading,
Android.Widget.ToastLength.Short).Show();
}
我想你可以这样做 ((TextView)e.View).getText().toString()
List<Dictionary<string,string>> lstItems;
lstItems 包含所有列表项,它被加载到列表视图中。从 listView 单击侦听器中,您将获得所选项目的位置。假设是i。然后你可以从 lstItems.
中取出那个项目
private void lv_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
Dictionary<string,string> selectedItem=lstItems.get(e.Position);
// toast necessary information using selectedItem object
}
检查以下代码以使用列表视图项中的特定文本视图和其他视图。
喜欢:
TextView mTextView = (TextView) listview.getChildAt(0).findViewById(R.id.text);
您可以轻松获取Listview的列表项。
也许有这样的东西?
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;
}
}
你可以有一个按钮来捕捉被点击的项目...
你可以有这样的元素 Position。
int position= FindViewById(Resource.Id.listIncindentes).CheckedItemPosition;
元素值是这样的。
var value= FindViewById(Resource.Id.listIncindentes).GetItemAtPosition(position);
在 Xamarin.Android 应用程序中,我有一个我之前填充的 ListView。 在正确触发的 listview_ItemClick 事件处理程序中,我想检索单击的列表视图项视图的文本,以便在 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 会打印:
you clicked System.Collections.Generic.Dictionary'2[System.String, System.String]
请注意,每个 ListView 行都由两个 TextView 组成,我通过将 List<Dictionary<string,string>>
传递给 ListView 适配器构造函数来填充 ListView。
简单来说:
LISTVIEW
|文本视图1 |文本视图2 | ---> 项目 1
|文本视图1 |文本视图2 | ---> 项目 2
如果用户点击 ListView 的 item2,我需要检索 item 2 的 textView1.Text 或 textView2.Text。
我也想过做:
FindViewById<TextView>(resultsListView.GetItemIdAtPosition(e.Position);
但是 Adapter GetItemIdAtPosition returns 是 long 而不是 int,所以我不确定它是同一种 Id。
以下也不起作用(我认为它与 lv.GetItemAtPosition(e.position)
相同:
lv.Adapter.GetItem(e.Position);
试试这个可能会有帮助
void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
var listView = sender as ListView;
var t = tableItems[e.Position];
Android.Widget.Toast.MakeText(this, t.Heading,
Android.Widget.ToastLength.Short).Show();
}
我想你可以这样做 ((TextView)e.View).getText().toString()
List<Dictionary<string,string>> lstItems;
lstItems 包含所有列表项,它被加载到列表视图中。从 listView 单击侦听器中,您将获得所选项目的位置。假设是i。然后你可以从 lstItems.
中取出那个项目private void lv_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
Dictionary<string,string> selectedItem=lstItems.get(e.Position);
// toast necessary information using selectedItem object
}
检查以下代码以使用列表视图项中的特定文本视图和其他视图。
喜欢:
TextView mTextView = (TextView) listview.getChildAt(0).findViewById(R.id.text);
您可以轻松获取Listview的列表项。
也许有这样的东西?
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;
}
}
你可以有一个按钮来捕捉被点击的项目...
你可以有这样的元素 Position。
int position= FindViewById(Resource.Id.listIncindentes).CheckedItemPosition;
元素值是这样的。
var value= FindViewById(Resource.Id.listIncindentes).GetItemAtPosition(position);