【问题标题】:Android ListView Filtering Without Repeatedly Instantiating ArrayAdapters无需重复实例化 ArrayAdapters 的 Android ListView 过滤
【发布时间】: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 上的所有推文数据(我也尝试查看过滤器类,它似乎破坏了适配器上的数据以“过滤”)?

【问题讨论】:

    标签: java android


    【解决方案1】:

    看起来你制作 4 个 ArrayList 的方法很好——只需制作一个由 4 个 ArrayAdapter 组成的数组。您甚至可以更进一步,制作 4 个 ListView,然后根据选择的一个简单地将可见性设置为 GONE 或 VISIBLE。

    【讨论】:

      猜你喜欢
      • 2019-02-05
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2012-12-19
      • 2013-11-21
      • 1970-01-01
      相关资源
      最近更新 更多