Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从同一ArrayList筛选的不同ListView_Java_Android_Arraylist_Adapter - Fatal编程技术网

Java 从同一ArrayList筛选的不同ListView

Java 从同一ArrayList筛选的不同ListView,java,android,arraylist,adapter,Java,Android,Arraylist,Adapter,因此,我正在开发一个新闻应用程序,它有一个ArraylistTopNewsList,其中包含所有类别的所有新闻。现在我有了一个特定于类别的新闻列表,因此我想在适配器中为不同的列表视图使用相同的arraylist,我想适配器根据我提供的类别id过滤新闻(我在arraylist中有它),arraylist实际上是-arraylist,id为,新闻标题,imageurl等注意,我不能使用副本,因为有像read/unread这样的字段应该反映在不同的类别中 这是我的ArrayList供参考 HashMa

因此,我正在开发一个新闻应用程序,它有一个Arraylist
TopNewsList
,其中包含所有类别的所有新闻。现在我有了一个特定于类别的新闻列表,因此我想在适配器中为不同的
列表视图使用相同的arraylist,我想适配器根据我提供的类别id过滤新闻(我在arraylist中有它),arraylist实际上是-
arraylist
,id为,新闻标题,imageurl等注意,我不能使用副本,因为有像
read/unread
这样的字段应该反映在不同的类别中

这是我的ArrayList供参考

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);
HashMap map=newhashmap();
//将每个子节点添加到HashMap key=>value
地图放置(标签类别id、id);
地图放置(标签标题、标题);
地图放置(标签描述符,描述);
map.put(已创建标记,已创建);
地图放置(标签图片,图片);
地图放置(标签_图像2,图像2);
//将哈希列表添加到ArrayList
添加(地图);

从设计角度来看,您应该使用此字段创建类/类型
新闻。
所以你会得到

class News
{
 String id;
 String title;
 // and so on
}
然后您将拥有
arraylistallnews
新闻列表

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

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));
   }
}
List newsOfSportsCategory=ArrayList();
for(int i=0;i

您将获得包含运动类别的列表,而这不是副本,因为您只保存对allNews列表中的对象的引用。

您如何在ArrayList中使用HashMap,每个新闻都有自己的HashMap还是什么?@Jedil每个新闻都有自己的HashMap。那么您如何在该HashMap中存储CategoryId,以及为什么使用HashMap?@Jedil用更多信息编辑了问题。我也可以用HashMap进行复制-我认为从设计的角度来看,这不会使它变得更好。我不想进行复制,因为还有另一个字段,如
read/unread
,必须在ListView之间同步。你说你不能使用复制。所以这个解决方案不进行任何复制。我的代码中没有构造函数或
copy
方法。如果新闻来自某个类别,我只在第二个列表中添加对对象的引用。