我有一个包含元素的ArrayList(字段是name和type)。只有两种不同的可能类型(“edu”和“ent”),我希望每个类型都显示在自己的listview中。
我的想法是创建两个具有相同数据的新ArrayList,然后循环遍历每个并过滤不需要的元素,如下所示:
ListView listView_ent = (ListView) findViewById(R.id.popular_apps_list_ent);
ArrayList<DataHolder> data_ent = data;
for (int i = 0; i < data_ent.size(); i++) {
if(data_ent.get(i).getType().equals("edu")){
data_ent.remove(i);
}
}
listView_ent.setAdapter(new AppsAdapter(this, data_ent));
ListView listView_edu = (ListView) findViewById(R.id.popular_apps_list_edu);
ArrayList<DataHolder> data_edu = data;
for (int i = 0; i < data_edu.size(); i++) {
if(data_edu.get(i).getType().equals("ent")){
data_edu.remove(i);
}
}
listView_edu.setAdapter(new AppsAdapter(this, data_edu));
ArrayList中有10个元素,每种类型5个。
问题是,在两个列表视图的末尾,有4个相同的项目以混合类型显示。
知道我做错了什么吗?
从数组列表中删除项目后,索引都会向下移动。您可以在“删除”之后添加“i--”或使用迭代器:
Iterator<DataHolder> i = data_edu.iterator();
while (i.hasNext()) {
DataHolder d = i.next();
if (d.getType().equals(...) {
i.remove();
}
}
是的,赋值只会将data_ent
(这是一个引用)的值复制到data_edu
。它们都将引用同一个对象。因此,无论您在任一列表中进行什么更改,相同的更改也将反映在另一个列表中
这是你应该做的:-
List<Integer> data_edu = new ArrayList<Integer>(data_ent);
或者使用数组列表的addAll()
函数。
1) 复制数据
2) 不要使用i和remove进行迭代;使用迭代器(删除方法:http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html#remove())或从列表末尾开始
像这样的东西:
ListView listView_ent = (ListView) findViewById(R.id.popular_apps_list_ent);
ArrayList<DataHolder> data_ent = new ArrayList( data);
for (int i = data_ent.size()-1; i >= 0; i--) {
if(data_ent.get(i).getType().equals("edu")){
data_ent.remove(i);
}
}
listView_ent.setAdapter(new AppsAdapter(this, data_ent));
ListView listView_edu = (ListView) findViewById(R.id.popular_apps_list_edu);
ArrayList<DataHolder> data_edu = = new ArrayList( data);
for (int i = data_edu.size()-1; i >= 0 ; i--) {
if(data_edu.get(i).getType().equals("ent")){
data_edu.remove(i);
}
}
listView_edu.setAdapter(new AppsAdapter(this, data_edu));
考虑矩阵: 然后,列表: 如果badcombos矩阵中的任何颜色组合出现在列表中(即上例中的子列表[[3]]和[[4]]),则将从列表中删除,我如何根据这些条件“减少”列表。
已加载查询: 加载的索引: net.ucanaccess.jdbc.ucanaccessSqlException:UCAEXC::3.0.0在net.ucanaccess.jdbc.ucanaccessDriver.connect(UCANAccessDriver.java.driverManager.getConnection(DriverManager.java:258)在java.sql.d
我试图将ArrayList的内容保存到一个txt文件中,但当我这样做时,会得到很多不需要的字符。逗号是我可以处理字符串的。replace()但我想知道是否有其他方法可以更有效地过滤这些类型的字符?尤其是“,”t[”txt文件中的一部分。上面的引号中还显示了其他字符,但我不想在这里复制它们。我要输出到文件的代码如下。我正在向ArrayList添加几个字符串,但问题似乎在于ArrayList本身。如下
给定一个元素列表,我想获取具有给定属性的元素并将其从列表中删除。我找到的最佳解决方案是: 是否可以在lambda表达式中组合get和删除?
本文向大家介绍Kotlin 筛选列表,包括了Kotlin 筛选列表的使用技巧和注意事项,需要的朋友参考一下 示例
列表筛选可以对地图中的数据按照事先设置好的列表模板进行查询。在第一次点击列表筛选时,会进入筛选定制页面,如下图: 点击确认后,开始进行筛选设置:点击新增按钮,可对某个字段添加筛选要求,添加后然后选择条件旁边加号按钮,以设置对某一列的具体筛选要求。 如上图的筛选条件为“名称包含迪亚”的售点,继续单击加号可以对名称列继续添加条件。如果需要对其他字段进行筛选,可以再次单击新增按钮增加条件,点击确定及保存