C# 如何在xamarin c中单击listview的特定对象时获取特定项#
我想在单击对象中的特定行时检索特定项(即标题和副标题项) var selectedTableItem=e.Parent.GetItemAtPosition(e.Position) 下面是代码。在这里我得到整个对象,但如何得到对象中的项目?。任何帮助都是感激的C# 如何在xamarin c中单击listview的特定对象时获取特定项#,c#,android,listview,xamarin,C#,Android,Listview,Xamarin,我想在单击对象中的特定行时检索特定项(即标题和副标题项) var selectedTableItem=e.Parent.GetItemAtPosition(e.Position) 下面是代码。在这里我得到整个对象,但如何得到对象中的项目?。任何帮助都是感激的 List<TableItem> tableItems = new List<TableItem>(); ListView listView; protected ov
List<TableItem> tableItems = new List<TableItem>();
ListView listView;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.HomeScreen);
listView = FindViewById<ListView>(Resource.Id.List);
EditText _filterText = FindViewById<EditText>(Resource.Id.editInp);
tableItems.Add(new TableItem() { Heading = "Vegetables", SubHeading = "65 items" });
tableItems.Add(new TableItem() { Heading = "Fruits", SubHeading = "17 items" });
_filterText.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) => {
// filter on text changed
var searchTerm = _filterText.Text;
var updatedTableItems = tableItems.Where(
// TODO Fill in your search, for example:
tableItem => tableItem.Heading.ToLower().Contains(searchTerm.ToLower()) ||
tableItem.SubHeading.ToLower().Contains(searchTerm.ToLower())
).ToList();
var filteredResultsAdapter = new HomeScreenAdapter(this, updatedTableItems);
listView.Adapter = filteredResultsAdapter;
};
listView.Adapter = new HomeScreenAdapter(this, tableItems);
listView.ItemClick += OnListItemClick;
}
protected void OnListItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
{
var selectedTableItem = e.Parent.GetItemAtPosition(e.Position);
}
}
}
public class TableItem
{
public string Heading { get; set; }
public string SubHeading { get; set; }
}
List tableItems=new List();
列表视图列表视图;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.HomeScreen);
listView=findviewbyd(Resource.Id.List);
EditText\u filterText=FindViewById(Resource.Id.editInp);
添加(新的TableItem(){Heading=“vegets”,SubHeading=“65 items”});
添加(新的TableItem(){Heading=“Fruits”,SubHeading=“17 items”});
_filterText.TextChanged+=(对象发送者,Android.Text.TextChangedEventArgs e)=>{
//更改文本的筛选器
var searchTerm=\u filterText.Text;
var updateTableItems=tableItems。其中(
//TODO填写您的搜索,例如:
tableItem=>tableItem.Heading.ToLower()包含(searchTerm.ToLower())||
tableItem.SubHeading.ToLower()包含(searchTerm.ToLower())
).ToList();
var filteredResultsAdapter=新的HomeScreenAdapter(这是更新的TableItems);
Adapter=filteredResultsAdapter;
};
Adapter=new HomeScreenAdapter(这是tableItems);
listView.ItemClick+=OnListItemClick;
}
受保护的void OnListItemClick(对象发送者,Android.Widget.AdapterView.ItemClickEventArgs e)
{
var selectedTableItem=e.Parent.GetItemAtPosition(e.Position);
}
}
}
公共类表项
{
公共字符串标题{get;set;}
公共字符串子目{get;set;}
}
试试这个
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();
}
//Make a toast with the item name just to show it was clicked
它显示错误说主屏幕不包含filteredResultsAdapter,原因是什么。我甚至把它作为全局变量,但没有任何工作。你能给我完整的代码吗