2014-01-24 100 views
1

現在我正在使用edittext和listview在android中製作一個程序。我想使用上面的edittext搜索listview項目。將數據填充到列表視圖後,當用戶在edittext中鍵入文本時,listview將滾動到以該文本開始的位置。例如:我有項目:蘋果,應用程序,書籍,男孩,汽車,貓,現金.....當我在edittext中鍵入b然後listview將滾動到書。我使用listview.setSelection(position),但因爲我的數據量超過了30,000,所以當我使用下面的代碼時,它很慢找到數據。 是否有任何解決方案或任何其他方法來做到這一點? 這是我的代碼:Android Listview搜索到特定位置

YOUR_EDITTEXT.addTextChangedListener(new TextWatcher() { 

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

    //LOGIC MAY DIFFER ACCORDING TO YOUR REQUIREMENT.. 
    int POSITION = 0; 
    for(int i =0;i<list.size();i++) { 
     if(list.get(i).startsWith(s.toString())) 
     { 
      POSITION = i; 
      break; 
     } 
    } 
    listview.smoothScrollToPosition(POSITION); 

} 

public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 

} 

public void beforeTextChanged(CharSequence s, int start, int count, 
     int after) { 
    // TODO Auto-generated method stub 

} 

});

+2

檢查這個問題http://stackoverflow.com/questions/14663725/list-view-filter-android –

回答

0

您的列表是否已分類?如果是這樣,您可以在數據源上使用二進制排序。

+0

不,它不是在列表排序 –