所以我有一个listview和适配器设置。当我在oncreate()方法中添加一个槽槽adapter.add()时,一切都很好。但是,当我通过一个侦听器添加它时,它会创建一个奇怪的灰色空间,好像这些项目在其他项目之下:

java - 适配器更新时 ListView 中的灰色空间-LMLPHP

这是添加项目的代码:

                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。话虽这么说,但项目已添加,但由于没有任何内容而不够高。

这就是为什么您会看到奇怪的灰色空间,它们实际上是几个项目,但不足以看到。

09-10 21:46