BasicDataSource.ets
1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* IDataSource处理数据侦听器的基本实现
*/
export abstract class BasicDataSource<T> implements IDataSource {
private listeners: DataChangeListener[] = [];
constructor() {
}
// 获取数据总个数
public abstract totalCount(): number;
// 获取索引对应的Item数据
public abstract getData(index: number): T | undefined;
// 注册改变数据的控制器
public registerDataChangeListener(listener: DataChangeListener): void {
if (this.listeners.indexOf(listener) < 0) {
console.info('add DataChangeListener');
this.listeners.push(listener);
}
}
// 注销改变数据的控制器
public unregisterDataChangeListener(listener: DataChangeListener): void {
const pos = this.listeners.indexOf(listener);
if (pos >= 0) {
console.info('remove DataChangeListener');
this.listeners.splice(pos, 1);
}
}
// 通知控制器数据重新加载数据
public notifyDataReload(): void {
this.listeners.forEach(listener => {
listener.onDataReloaded();
})
}
// 通知控制器数据增加
public notifyDataAdd(index: number): void {
this.listeners.forEach(listener => {
listener.onDataAdd(index);
})
}
// 通知控制器数据位置变化
public notifyDataMove(from: number, to: number): void {
this.listeners.forEach(listener => {
listener.onDataMove(from, to);
})
}
// 通知控制器数据删除
public notifyDataDelete(index: number): void {
this.listeners.forEach(listener => {
listener.onDataDelete(index);
})
}
// 通知控制器数据变化
public notifyDataChange(index: number): void {
this.listeners.forEach(listener => {
listener.onDataChange(index);
})
}
}