4

アイテムのリスト (500 を超えるエントリ)、10 個のフィルター ボタン (チェックボックス)、および検索ボックスがある Android アプリケーションを作成しています。

ユーザーが 1 つまたは複数のフィルターをクリックすると、それに応じてリストが更新されます。

これが私が行った方法です: 10 個のリストから始め、それぞれがフィルターに一致する項目のみによって初期化されます。次に、ユーザーが (たとえば) フィルター 1、3、および 7 をアクティブにすると、リスト 1、3 の交点が作成されます。と 7 を参照して、検索クエリに対してフィルター処理します。

これがこれまでのところ「最速」の方法であることがわかりましたが、より優れた効率的なパターンがあることはわかっています。時間がかからないおすすめの方法を教えてください。

ありがとう

4

1 に答える 1

1

戦略パターンのコレクションを使用できます。

interface IFilter
{
    List<Item> Filter(List<Item> items);
}

class FilterA implements IFilter
{
    public List<Item> Filter(List<Item> items)
    {
        //filter
    }
}

class FilterB implements IFilter
{
    public List<Item> Filter(List<Item> items)
    {
        //filter
    }
}

//list that would have filters added to it as the user activates filters
List<IFilter> filters = new List<IFilter>();    
//your list of items
List<Item> items = new List<Item>();

public List<Item> Filter() {
    for (IFilter filter : filters) {
        items = filter.Filter(items);
    }    
    return items;
}
于 2012-09-19T17:33:31.333 に答える