• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7*     http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15
16import LinkedList from '@ohos.util.LinkedList';
17import { BaseDataSource } from '@ohos/common/src/main/ets/components/BaseDataSource';
18import { Information } from '../../model/Information';
19
20export class LinkedListDataSource extends BaseDataSource {
21  private linkedList: LinkedList<Information> = new LinkedList();
22
23  public totalCount(): number {
24    return this.linkedList.length;
25  }
26
27  public getData(index: number): Information {
28    return this.linkedList[index];
29  }
30
31  public addData(item: Information): void {
32    this.linkedList.add(item);
33    this.notifyDataAdd(this.linkedList.length - 1);
34    this.notifyDataReload();
35  }
36
37  public deleteFirst(): void {
38    this.linkedList.removeFirst();
39    this.notifyDataDelete(0);
40    this.notifyDataReload();
41  }
42
43  public deleteLast(): void {
44    this.linkedList.removeLast();
45    this.notifyDataDelete(this.linkedList.length - 1);
46    this.notifyDataReload();
47  }
48
49  public deleteData(index: number): void {
50    this.linkedList.removeByIndex(index);
51    this.notifyDataDelete(index);
52    this.notifyDataReload();
53  }
54}