2015-09-21 3 views
1

У меня есть класс, в котором я могу поместить в StringArray, и он отображает список с полем поиска для фильтрации содержимого. Мое приложение подвержено тому, что каждое поле имеет идентификатор набора. Однако, когда я ищу значение, идентификаторы меняются в отфильтрованный список. Есть ли способ, чтобы получить идентификатор из исходного списка, так что даже в отфильтрованный список я могу иметь идентификаторы, как 9, 14, а не 0, 1, 2 ....Получить оригинальный идентификатор из отфильтрованного списка Viewview

lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , searchItems)); 
    ed.addTextChangedListener(new TextWatcher() { 

     public void afterTextChanged(Editable s) { 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, 
             int after) { 
     } 

     public void onTextChanged(CharSequence s, int start, int before, 
            int count) { 

      textlength = ed.getText().length(); 
      arr_sort.clear(); 
      for (int i = 0; i < searchItems.length; i++) { 
       if (textlength <= searchItems[i].length()) { 
        if (ed.getText().toString().equalsIgnoreCase((String) searchItems[i].subSequence(0, textlength))) { 
         arr_sort.add(searchItems[i]); 
        } 
       } 
      } 

      lv1.setAdapter(new ArrayAdapter<String>(Rest_Search.this, android.R.layout.simple_list_item_1, arr_sort)); 
//    lv1.smoothScrollToPosition(20); 
     } 
    }); 
    lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView parent, View v, 
           int position, long id) { 
//    String a = parent.getItemAtPosition(position); 
//    menuID = (int) id; 

      int a = (int) parent.getAdapter().getItemId(position); 
//    menuID = (int) parent.getAdapter().getItemId(position); 
      Toast.makeText(Rest_Search.this, ""+a, Toast.LENGTH_SHORT).show(); 

ответ

1

Вы можете настроить ваш adapter. создать новый Class расширяет BasaAdapter и Переопределить getItemId метод:

@Override 
    public long getItemId(int position) { 
     return items[position].getID(); 
    } 

, а затем в onItemClick использовать пункт id с.

+0

Это работало, все делали это дало некоторые проблемы. Спасибо за быстрый ответ – Riekelt

0

В настраиваемом использовании адаптера getItemId (позы)

вы можете получить позы переопределения метод OnClick из View.OnClickListener()

вот пример

private View.OnClickListener mOnAddContactClickListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     final int position = mListView.getPositionForView(view); 
     Log.v(JBOOK,"original id "+getItemId(position)); 
Смежные вопросы