列表视图
ListView 是一个基础实现,提供了绘制 项目 列表的功能。继承自 BoxView。
ListView<T> 的类型是其 item,并且可以接受任何对象。进一步的 item 处理发生在 CellFactory 中。为了方便,它支持通用的高级列表功能,可以显示正常 check 和 radio 类型的选中状态。本质上,你可以有一个项目列表,这些项目可以原样显示,也可以显示为任何项目都可以有选中状态,或者只有一个项目可以有选中状态。
ListView<String> view = new ListView<>();
view.setItems(List.of("item1", "item2"));
默认的item style是nocheck,但可以更改。
支持 NOCHECK, CHECK  和 RADIO
ListView<String> view = new ListView<>(ItemStyle.CHECKED);
自定义
单个单元格的显示方式取决于CellFactory。默认实现简单地使用toString()方法显示item。
可以通过修改所使用的 CellFactory 来进行自定义。
record ExampleData(String name) {
};
static class ExampleListCell extends AbstractListCell<ExampleData> {
	public ExampleListCell(ExampleData item) {
		super(item);
	}
	@Override
	public void draw(Screen screen) {
		Rectangle rect = getRect();
		Writer writer = screen.writerBuilder().style(getStyle()).build();
		writer.text(getItem().name(), rect.x(), rect.y());
		writer.background(rect, getBackgroundColor());
	}
}
并将其设置为工厂:
ListView<ExampleData> view = new ListView<>();
view.setCellFactory((list, item) -> new ExampleListCell(item));
默认绑定
默认的 视图命令 有:
表 1. ViewCommands
| 命令 | 描述 | 
|---|---|
| LINE_UP | 选中项向上移动。 | 
| LINE_DOWN | 选中项向下移动。 | 
默认的 键绑定 为:
表 2. 关键
| 命令 | 描述 | 
|---|---|
| CursorUp | 绑定 ViewCommand LINE_UP | 
| CursorDown | 绑定 ViewCommand LINE_DOWN | 
| Enter | 选择激活的项目。 | 
| Space | 改变激活项目的选中状态。 | 
默认的鼠标绑定是:
表 3. 鼠标
| 命令 | 描述 | |
|---|---|---|
| Wheel | WheelUp | 绑定 ViewCommand LINE_UP | 
| Wheel | WheelDown | 绑定 ViewCommand LINE_DOWN | 
| Released | Button1 | 选择项目 | 
事件
事件的发送取决于所使用的列表类型。
表 4. ListView 事件
| 事件 | 描述 | 
|---|---|
| ListViewOpenSelectedItemEvent | 请求打开当前激活的项目。 | 
| ListViewSelectedItemChangedEvent | 当前激活的项目已更改。 |