android - Nativescript ListView 仅显示一项

标签 android typescript nativescript

我正在学习复数视觉类(class),但遇到了一个奇怪的问题。 我的 ListView 只显示第一个元素,没有别的。 这很奇怪,我以前使用 ListView 没有问题,所以我不确定错误来自哪里。

布局:

    <Page xmlns="http://schemas.nativescript.org/tns.xsd"
 loaded="pageLoaded">
  <GridLayout rows="auto, *">
    <!-- Header -->
    <StackLayout cssClass="page-header">
      <Label text="Header" cssClass="page-title bold" horizontalAlignment="center" margin="15"/>
    </StackLayout>

    <!-- Sessions Views -->
    <GridLayout rows="auto, *" row="1"> 

      <ListView items="{{ sessions }}">
        <ListView.itemTemplate>
          <Label text="{{ title }}"/>
        </ListView.itemTemplate>
      </ListView>

    </GridLayout>
  </GridLayout>
</Page>

typescript :

import { EventData, Observable } from "data/observable";
import { Page } from "ui/page";

var page: Page;
var tempSessions = [
    {
        id: '0',
        title: "Stuff"
    },
    {
        id: '1',
        title: "Stuffly"
    },
    {
        id: '2',
        title: "Stufferrs"
    },
    {
        id: '3',
        title: "Event 4"
    }
];
export function pageLoaded(args: EventData){
    console.log(JSON.stringify(tempSessions));
    page = <Page>args.object;
    page.bindingContext = new Observable({
        sessions: tempSessions
    });
}

我怀疑第一个列表项完全填满了 gridLayout,但是在它周围放置一个边框表明它不是。

最佳答案

您的代码中真正发生的是您正在创建一个包含两行的网格,然后默认情况下您的 ListView 被放置在第一行并设置为“自动”。此设置将为您提供与一个项目模板空间一样大的空间 - 事实上,您的所有项目都已加载并且可以滚动,但有一个地方只能显示其中一个项目。

auto 更改为 * 或删除嵌套的网格布局。只是为了确保您可以控制在确切位置显示的元素,我还建议始终使用 row="col="声明您在网格中的位置,即使是在非常简单的架构中也是如此。

例子:

<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded">
  <GridLayout rows="auto, *">
    <!-- Header -->
    <StackLayout row="0" cssClass="page-header">
      <Label text="Header" cssClass="page-title bold" horizontalAlignment="center" margin="15"/>
    </StackLayout>

    <!-- Sessions Views -->
    <ListView row="1" items="{{ sessions }}">
      <ListView.itemTemplate>
        <Label text="{{ title }}"/>
      </ListView.itemTemplate>
    </ListView>

  </GridLayout>
</Page>

关于android - Nativescript ListView 仅显示一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40231203/

相关文章:

android - 更新 ListView,即使其适配器为 null

angular - 一次只选择一个复选框并在选中的特定复选框或未选中的两个复选框上执行特定任务

typescript - 如何将 ref 与 typescript 一起使用?

javascript - OpenLayers - 在 map View 上调用 setZoom() 后 getCooperativeFromPixel 的返回值保持不变

javascript - Nativescript Vue 带有 v-bind 的切换按钮

javascript - Nativescript Javascript 和 Watson Cloud SDK 集成

android - Android 集成/功能测试的外部化配置

android - 为什么设置了HandlerThread looper的Handler可以和UI Object交互?

java - 按下android按钮后的 Activity 生命周期 "recents"创建新 Activity 但不销毁旧 Activity

angular - NativeScript RadListView rootLocator 不是一个函数