所以我有一个listview和适配器设置。当我在oncreate()方法中添加一个槽槽adapter.add()时,一切都很好。但是,当我通过一个侦听器添加它时,它会创建一个奇怪的灰色空间,好像这些项目在其他项目之下:
这是添加项目的代码:
ArrayList<Task> newTasks = new ArrayList<>(Arrays.asList(parser.ParseTasksJson(result)));
for (int i =0; i < 3;i++)
{
Task task = new Task(i, "Item" + i, 0);
tasks.add(task);
}
for(Task t : newTasks)
{
adapter.add(new Task(t.getTask_id(), t.getTask_title(), t.getTask_done()));
}
adapter.add(new Task(99,"Task after forloop", 0));
adapter.notifyDataSetChanged();`enter code here`
这是我的布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_home"/>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview">
</ListView>
</LinearLayout>
编辑:我还不够清楚。真正的问题在于,尽管解析器中的项目已添加到适配器中,但它们并未显示在列表视图中。查看更新的代码。
最佳答案
您的代码正常运行,但是问题出在这一行:
adapter.add(new Task(t.getTask_id(), t.getTask_title(), t.getTask_done()));
确保值正确,对我来说,您的数据似乎不包含有效的标题,并且布局项的高度为
wrap_content
。话虽这么说,但项目已添加,但由于没有任何内容而不够高。这就是为什么您会看到奇怪的灰色空间,它们实际上是几个项目,但不足以看到。