过滤的列表视图突出显示不正确的项目

时间:2016-02-26 10:32:00

标签: android listview filter selection

我有一个列表视图,我通过SearchView过滤项目。在激活项目的状态时,它没有获得正确的项目而是从该位置获取它。为了更清楚,请参阅以下屏幕截图:

  1. 搜索关键字com并选择已过滤的项目(即activated_state)
  2. enter image description here

    1. 清除过滤器时,当项目的位置发生变化时,它不会跟踪所选项目,即 com.android.gesture.builder
    2. enter image description here

      无论位置如何变化,我都希望选择正确。

      我在本节的MainActivity中的代码:

      DataGrid

      我正在使用扩展的baseAdapter,如果您需要查看该代码,请告诉我。

      更新

      我在代码中有OnItemClick侦听器:

      private void dgTest_SelectedCellsChanged( object sender, SelectedCellsChangedEventArgs e )
      {
          dgTest.SelectedItems.Add( ( dgTest.ItemsSource as ObservableCollection<OwnObject> )[0] );
      }
      

2 个答案:

答案 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; }

这是您过滤后的数组。

我已经对其进行了测试,并且可以正常工作。