从同一 ArrayList 筛选的不同列表视图



所以我正在开发一个新闻应用程序,该应用程序有一个 Arraylist TopNewsList,其中包含所有类别的所有新闻。现在我有一个特定于类别的新闻列表,所以我想在适配器中使用相同的数组列表用于不同的Listviews,我希望适配器根据我提供的类别 id 过滤新闻(我在 arraylist 中有它),Arraylist 实际上是 - ArrayList<HashMap<String, String>> 带有 id、新闻标题、图像网址等请注意,我不能使用副本, 因为像read/unread这样的领域应该跨类别反映。

这是我的数组列表仅供参考

HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_CATEGORYID, id);
map.put(TAG_TITLE, title);
map.put(TAG_DESCRIPTON, description);
map.put(TAG_CREATED, created);
map.put(TAG_IMAGE, image);
map.put(TAG_IMAGE2, image2);
// adding HashList to ArrayList
TopNewsList.add(map);

从设计的角度来看,您应该使用此字段进行类/类型News。所以你会得到

class News
{
 String id;
 String title;
 // and so on
}

然后你会ArrayList<News> allNews新闻列表。

如果您想过滤并仅从列表中获取一些新闻,只需制作另一个列表

List<News> newsOfSportsCategory = ArrayList<News>();
for(int i=0;i< allNews.size();i++)
{
   if(allnews.get(i).id.equals("idOfSportsCat")
   {
      newsOfSportsCategory.add(allnews.get(i));
   }
}

您将获得包含运动类别的列表,这不是复制,因为您只持有对 allNews 列表中的对象的引用。

最新更新