更新适配器时列表视图中的灰色 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,它们实际上是几件物品,但不够大,看不到。
所以我设置了列表视图和适配器。当我在 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,它们实际上是几件物品,但不够大,看不到。