【发布时间】:2010-08-05 12:22:45
【问题描述】:
我有一个 ListView,里面装满了 twitter 推文。我制作了一个自定义的 Tweet 类,这样我就可以存储一个特殊的类型编号。所以,我有 Tweet 类和自定义 ArrayAdapter:
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 个特殊类型的数字。 我想在一个人单击其中一个类型数字按钮而不破坏 ArrayAdapter 中的数据时显示过滤的推文 ListView。
我想出的一种方法是将我的主要推文 ArrayList 分解为子 ArrayList,并在每次单击其中一个按钮时在 ListView 上设置一个具有相应子 ArrayList 的新 ArrayAdapter。每次都实例化一个新的 ArrayAdapter 似乎效率很低。
有没有更好的方法来显示过滤后的 ListView,同时保留 ArrayAdapter 上的所有推文数据(我也尝试查看过滤器类,它似乎破坏了适配器上的数据以“过滤”)?
【问题讨论】: