2010-08-05 64 views
0

我有一個ListView充滿了Twitter的鳴叫。我做了一個自定義的Tweet類,以便可以存儲特殊類型的數字。所以,我有鳴叫類和定製ArrayAdapter:Android ListView過濾而無需重複實例化ArrayAdapters

class Tweet { 
    private int typeNumber; // My unique type number which does not come from Twitter 
    private String message; 
    // ... other tweet data 
} 

class TweetsAdapter extends ArrayAdapter<Tweet> { 
    private ArrayList<Tweet> tweets; 

    TweetsAdapter(Context context, int textViewResourceId, ArrayList<Tweet> tweets) { 
     super(context, textViewResourceId, tweets); 
     this.tweets = tweets; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
    // Inflate my own view and set my own tweet row information 
    } 
} 

有是有4個按鍵分別代表4個特殊類型號的導航欄。 我想顯示一個過濾的推文ListView,當一個人點擊其中一個類型數字按鈕而不破壞ArrayAdapter中的數據時。

我想出的一種方法是將我的主要推文ArrayList分解成子ArrayLists,並在每次單擊其中一個按鈕時在ListView上設置一個新的ArrayAdapter和相應的子ArrayList。每次實例化一個新的ArrayAdapter似乎效率低下。

有沒有更好的方式來顯示過濾的ListView,同時保持ArrayAdapter上的所有tweet數據(我也試着看過濾器類,它似乎銷燬適配器上的數據「過濾」)?

回答

0

看起來好像你製作4個ArrayLists的方法很好 - 只需製作一個4個ArrayAdapter的數組。你甚至可以進一步做出4個ListViews,並根據選擇哪一個簡單地將可見性設置爲GONE或VISIBLE。