从同一ArrayList过滤的不同ListView

时间:2014-02-07 20:22:02

标签: java android arraylist adapter

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

这是我的ArrayList FYI

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);

1 个答案:

答案 0 :(得分:1)

从设计的角度来看,您应该使用此字段创建类/类型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列表中对象的引用。