2012-11-17 23 views
4

我已經擴展了我的自定義類的ArrayAdapter。我的課程覆蓋toString()並返回我想用於搜索查詢的字段。ArrayAdapter股票過濾顯示錯誤的元素

這是我的過濾代碼:

productItemAdapter.getFilter().filter(filterText.toLowerCase());

這是我toString()代碼:

return name.toLowerCase();

篩選工作(返回正確的元素數),但它的錯誤的元素。它始終顯示列表上的第一個元素,而不是匹配的搜索...

+0

不要害怕發佈適配器的代碼。 – Luksprog

回答

10

我有完全相同的問題,我會假設(像我一樣),你沒有閱讀文檔時嘗試執行這個。

我正在將我的對象數組傳遞給ArrayAdapter,隨後將數組傳遞給超級構造函數。

我犯的錯誤是:我存儲到傳入陣列和使用陣列繪製在getView()方法的項目的引用:

public SimpleAdapter(Context context, List<MyType> values) 
{ 
    super(context, R.layout.rowlayout, values); 
    this.context = context; 
    this.values = values; 
} 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
    // ... 
    MyType myType = values.get(position); 
    // ... 
    } 

應該所做的叫做ArrayAdapter類上的getItem()例如

MyType myType = getItem(position); 

哪個固定它美觀,事後很明顯。

- (e)

+0

感謝您的解決方案!在實現自定義適配器時擴展ArrayAdapter並使用SearchView進行過濾。 –