更新适配器时列表视图中的灰色 space

Grey space in listview when adapter is updated

所以我设置了列表视图和适配器。当我在 oncreate() 方法中通过 adapter.add() 添加项目时,一切都很好。但是当我通过一个监听器添加它时,它会创建这个奇怪的灰色 space,就好像这些项目在其他项目下面一样:

这是添加项目的代码:

                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。也就是说,项目已添加,但不够高,因为它们没有任何内容。

这就是为什么你会看到那个奇怪的灰色 space,它们实际上是几件物品,但不够大,看不到。