ListView

ListView 是一个基础实现,提供绘制 items 列表的功能。继承自 BoxView

ListView<T> 根据其 item 类型化,可以接受任何对象。进一步的 item 处理发生在 CellFactory 中。为了方便,支持通用高级列表功能,将选中状态显示为正常的 checkradio 类型。本质上,你可以拥有一个项目列表,这些项目按原样显示,或者显示为任何项目都可以有选中状态,或者只有一个项目可以有选中状态。

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));

默认绑定

默认的 view commands

表 1. ViewCommands
命令 描述

LINE_UP

选中项上移。

LINE_DOWN

选中项下移。

默认的 key bindings

表 2. 按键
命令 描述

CursorUp

绑定到 ViewCommand LINE_UP

CursorDown

绑定到 ViewCommand LINE_DOWN

回车键

选择当前选中项。

空格键

更改当前选中项的选中状态。

默认的 mouse bindings

表 3. 鼠标
命令 描述

Wheel | WheelUp

绑定到 ViewCommand LINE_UP

Wheel | WheelDown

绑定到 ViewCommand LINE_DOWN

Released | Button1

选择项目

事件

根据使用的列表类型发送事件。

表 4. ListView 事件
事件 描述

ListViewOpenSelectedItemEvent

请求打开当前选中项。

ListViewSelectedItemChangedEvent

当前选中项已更改。