2015-02-18 3 views
0

пример какой проблеме я столкнулся.v7 searchview перекрывающийся вопрос

Позвольте сказать, что у меня есть 6 элементов в списке всех в порядке слева направо [1,2,3,51,4,5].

При поиске 5 отображает «51» и «5». Когда я нажимаю «51», он открывает «1». Проблема в том, что отфильтрованный список перекрывает список, отображающий все элементы. Мне было интересно, как я могу решить эту проблему. Я использую v7.widget.SearchView

@Override 
public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.recipe_menu, menu); 
    SearchView searchView = (SearchView) menu.findItem(R.id.search_recipe).getActionView(); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      if (TextUtils.isEmpty(newText)) { 
       lv.clearTextFilter(); 
      } else { 
       lv.setFilterText(newText.toString()); 
      } 
      return true; 
     } 
    }); 
    super.onCreateOptionsMenu(menu, inflater); 
} 
+0

Какой адаптер вы используете? –

+0

стандартный массивный адаптер final ArrayAdapter adapter = новый ArrayAdapter (getActivity(), android.R.layout.simple_list_item_1, data); – blitz

+0

такой же результат. щелчок по первому элементу поиска открывает первый элемент в списке. – blitz

ответ

1

Я думаю, что вы делаете ошибку в onItemClick(AdapterView<?> parent, View view, int position, long id) методы. Вы берете данные по позиции из списка данных. «Позиция» - это позиция щелчка по списку. Поэтому, если вы отфильтровываете свой список и нажимаете на первый элемент, значение позиции будет «1». Вы должны принять значение от адаптера, который соответствует нажатой позиции. Вы должны взять товар из адаптера, как показано в коде ниже:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     ... 

     String data = ((ExerciseDAO)parent.getAdapter().getItem(position)).getTitle() ; 

     ... 
    } 
}); 

Если у вас есть вопросы - просто спросите.

+0

эй сладкий человек, наконец, сработал. Огромное спасибо. Я столкнулся с этими проблемами несколько месяцев и не повезло. Вернулся к работе над моим проектом, и он, наконец, работает сейчас. – blitz

+0

Добро пожаловать. Я рад, что смогу помочь вам :) Удачи –

+0

Извините, но я не понимаю. Что именно вы хотите сделать. Теперь вы получаете правильный объект. Это похоже на другую проблему. –

Смежные вопросы