我有一个列表视图,我通过SearchView过滤项目。在激活项目的状态时,它没有获得正确的项目而是从该位置获取它。为了更清楚,请参阅以下屏幕截图:
无论位置如何变化,我都希望选择正确。
我在本节的MainActivity中的代码:
DataGrid
我正在使用扩展的baseAdapter,如果您需要查看该代码,请告诉我。
更新
我在代码中有OnItemClick侦听器:
private void dgTest_SelectedCellsChanged( object sender, SelectedCellsChangedEventArgs e )
{
dgTest.SelectedItems.Add( ( dgTest.ItemsSource as ObservableCollection<OwnObject> )[0] );
}
答案 0 :(得分:0)
如果我没有出错,那么你需要使用OnItemClick lisenter,并获得这样的项目。
搜索视图更改列表项的位置,但是当我们从适配器获取项目时,它会返回当前项目。
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position,
long arg3)
{
SString itemName = (String) adapter.getAdapter().getItem(position);
// assuming string and if you want to get the value on click of list item
// do what you intend to do on click of listview row
}
});
答案 1 :(得分:0)
您可以在适配器中创建一个函数getVisibleArray(),然后从onItemClickListener调用它。
在setOnClickListener中:
People personInFocus = (People) adapter.getVisibleArray().get(position);
在适配器中:
public ArrayList<People> getVisibleArray() {
return mDisplayedValues;
}
这是您过滤后的数组。
我已经对其进行了测试,并且可以正常工作。