鸿蒙轻量级数据库 DatabaseHelper基本用法

时间:2021-08-14 23:10:29

鸿蒙轻量级数据库 DatabaseHelper基本用法

前言:

各位同学大家好有段时间没有给大家更新文章,具体多久我也不记得,最近在学习鸿蒙开发写了一些小demo 就想着分享给家 今天要讲的是 ListContainer 鸿蒙OS开发中的 列表组件

效果图:

鸿蒙轻量级数据库 DatabaseHelper基本用法
鸿蒙轻量级数据库 DatabaseHelper基本用法
鸿蒙轻量级数据库 DatabaseHelper基本用法

具体实现:

ListContainer是用来呈现连续、多行数据的组件,包含一系列相同类型的列表项。

ListContainer的使用方法

1.在layout目录下的xml文件中创建ListContainer。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:orientation="vertical"
  7.     <ListContainer 
  8.         ohos:id="$+id:list_container" 
  9.         ohos:height="match_parent" 
  10.         ohos:width="match_parent" 
  11.         ohos:layout_alignment="horizontal_center"/> 
  12. </DirectionalLayout> 

2.在layout目录下新建xml文件(例:item_sample.xml),作为ListContainer的子布局

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_content" 
  5.     ohos:width="match_parent" 
  6.     ohos:left_margin="16vp" 
  7.     ohos:right_margin="16vp" 
  8.     ohos:orientation="vertical"
  9.     <Text 
  10.         ohos:id="$+id:item_index" 
  11.         ohos:height="match_content" 
  12.         ohos:width="match_content" 
  13.         ohos:padding="4vp" 
  14.         ohos:text="Item0" 
  15.         ohos:text_size="20fp" 
  16.         ohos:layout_alignment="center"/> 
  17. </DirectionalLayout> 

3.创建SampleItem.java,作为ListContainer的数据包装类。

  1. public class SampleItem { 
  2.     private String name
  3.     public SampleItem(String name) { 
  4.         this.name = name
  5.     } 
  6.     public String getName() { 
  7.         return name
  8.     } 
  9.     public void setName(String name) { 
  10.         this.name = name
  11.     } 

4.ListContainer每一行可以为不同的数据,因此需要适配不同的数据结构,使其都能添加ListContainer上。创建SampleItemProvider.java,继承自RecycleItemProvider。必须重写的方法如下:

鸿蒙轻量级数据库 DatabaseHelper基本用法

代码示例如下:

  1. package com.example.listview; 
  2. import ohos.agp.components.*; 
  3. import java.util.List; 
  4. /** 
  5.  * 创建人:xuqing 
  6.  * 创建时间:2020年12月18日13:37:27 
  7.  * 类说明: 适配器 
  8.  *  
  9.  *  
  10.  *  
  11.  */ 
  12. public class SampleItemProvider extends RecycleItemProvider { 
  13.     private List<SampleItem> list; 
  14.     private MainAbility slice; 
  15.     public SampleItemProvider(List<SampleItem> list, MainAbility slice) { 
  16.         this.list = list; 
  17.         this.slice = slice; 
  18.     } 
  19.     @Override 
  20.     public int getCount() { 
  21.         return list.size(); 
  22.     } 
  23.     @Override 
  24.     public Object getItem(int position) { 
  25.         return list.get(position); 
  26.     } 
  27.     @Override 
  28.     public long getItemId(int position) { 
  29.         return position; 
  30.     } 
  31.     @Override 
  32.     public Component getComponent(int position, Component convertComponent, ComponentContainer componentContainer) { 
  33.         if (convertComponent== null) { 
  34.             Component cpt = LayoutScatter.getInstance(slice).parse(ResourceTable.Layout_item_sample,null,false); 
  35.             SampleItem sampleItem = list.get(position); 
  36.             Text text = (Text) cpt.findComponentById(ResourceTable.Id_item_index); 
  37.             text.setText(sampleItem.getName()); 
  38.             return cpt; 
  39.         } else { 
  40.             return convertComponent; 
  41.         } 
  42.     } 

5.在Java代码中添加ListContainer的数据,并适配其数据结构。

  1. @Override 
  2.    public void onStart(Intent intent) { 
  3.        super.onStart(intent); 
  4.        super.setUIContent(ResourceTable.Layout_ability_main); 
  5.        initListContainer(); 
  6.    } 
  7.    private void initListContainer() { 
  8.        ListContainer listContainer = (ListContainer) findComponentById(ResourceTable.Id_list_container); 
  9.        List<SampleItem> list = getData(); 
  10.        SampleItemProvider sampleItemProvider = new SampleItemProvider(list,this); 
  11.        listContainer.setItemProvider(sampleItemProvider); 
  12.  
  13.        listContainer.setItemClickedListener(new ListContainer.ItemClickedListener() { 
  14.            @Override 
  15.            public void onItemClicked(ListContainer listContainer, Component component, int i, long l) { 
  16.                SampleItem item = (SampleItem) listContainer.getItemProvider().getItem(i); 
  17.                new ToastDialog(MainAbility.this) 
  18.                        .setText("你点点击是:"+item.getName()) 
  19.                        // Toast显示在界面中间 
  20.                        .setAlignment(LayoutAlignment.BOTTOM) 
  21.                        .show(); 
  22.            } 
  23.        }); 
  24.  
  25.        listContainer.setItemLongClickedListener(new ListContainer.ItemLongClickedListener() { 
  26.            @Override 
  27.            public boolean onItemLongClicked(ListContainer listContainer, Component component, int i, long l) { 
  28.                SampleItem item = (SampleItem) listContainer.getItemProvider().getItem(i); 
  29.                new ToastDialog(MainAbility.this) 
  30.                        .setText("长按事件点击:"+item.getName()) 
  31.                        // Toast显示在界面中间 
  32.                        .setAlignment(LayoutAlignment.BOTTOM) 
  33.                        .show(); 
  34.                return false
  35.            } 
  36.        }); 
  37.  
  38.    } 
  39.  private ArrayList<SampleItem> getData() { 
  40.        ArrayList<SampleItem> list = new ArrayList<>(); 
  41.        for (int i = 0; i <= 10; i++) { 
  42.            list.add(new SampleItem("item"+i)); 
  43.        } 
  44.        return list; 
  45.    } 

假数据

  1. private ArrayList<SampleItem> getData() { 
  2.       ArrayList<SampleItem> list = new ArrayList<>(); 
  3.       for (int i = 0; i <= 10; i++) { 
  4.           list.add(new SampleItem("item"+i)); 
  5.       } 
  6.       return list; 
  7.   } 

显示效果:

鸿蒙轻量级数据库 DatabaseHelper基本用法

ListContainer的常用设置

item 子布局 的点击事件

  1. listContainer.setItemClickedListener(new ListContainer.ItemClickedListener() { 
  2.           @Override 
  3.           public void onItemClicked(ListContainer listContainer, Component component, int i, long l) { 
  4.               SampleItem item = (SampleItem) listContainer.getItemProvider().getItem(i); 
  5.               new ToastDialog(MainAbility.this) 
  6.                       .setText("你点点击是:"+item.getName()) 
  7.                       // Toast显示在界面中间 
  8.                       .setAlignment(LayoutAlignment.BOTTOM) 
  9.                       .show(); 
  10.           } 
  11.       }); 

效果如下

鸿蒙轻量级数据库 DatabaseHelper基本用法

item 子布局 的长按事件

  1. listContainer.setItemLongClickedListener(new ListContainer.ItemLongClickedListener() { 
  2.           @Override 
  3.           public boolean onItemLongClicked(ListContainer listContainer, Component component, int i, long l) { 
  4.               SampleItem item = (SampleItem) listContainer.getItemProvider().getItem(i); 
  5.               new ToastDialog(MainAbility.this) 
  6.                       .setText("长按事件点击:"+item.getName()) 
  7.                       // Toast显示在界面中间 
  8.                       .setAlignment(LayoutAlignment.BOTTOM) 
  9.                       .show(); 
  10.               return false
  11.           } 
  12.       }); 

效果如下

鸿蒙轻量级数据库 DatabaseHelper基本用法

ListContainer的样式设置

表2 ListContainer的样式设置

鸿蒙轻量级数据库 DatabaseHelper基本用法

设置ListContainer的布局方向:orientation设置为“horizontal”,表示横向布局;orientation设置为“vertical”,表示纵向布局。默认为纵向布局

在xml中设置:

  1. <ListContainer    ...    ohos:orientation="horizontal"/> 

在Java代码中设置

  1. listContainer.setOrientation(Component.HORIZONTAL); 

横向滑动效果如图

鸿蒙轻量级数据库 DatabaseHelper基本用法

设置ListContainer的开始和结束偏移量

  1. listContainer.setContentOffSet(32,16); 

为了便于观察,分别在子布局和ListContainer布局中添加背景色:

在item_sample.xml的根布局中添加背景色。

  1. <DirectionalLayout    ...    ohos:background_element="#FAEBD7">    ...</DirectionalLayout> 

在ListContainer布局文件中添加背景色。

  1. <ListContainer    ...    ohos:background_element="#FFDEAD"/> 

设置列表容器的开始偏移量为32,结束偏移量为16效果

鸿蒙轻量级数据库 DatabaseHelper基本用法

设置回弹效果。

在xml中设置:

  1. <ListContainer    ...    ohos:rebound_effect="true"/> 

在Java代码中设置

  1. listContainer.setReboundEffect(true); 
鸿蒙轻量级数据库 DatabaseHelper基本用法

在开启回弹效果后,可以调用setReboundEffectParams()方法调整回弹效果。

  1. listContainer.setReboundEffectParams(40,0.6f,20); 

设置着色器颜色。

在xml中设置:

  1. <ListContainer    ...    ohos:shader_color="#90EE90"/> 

在Java代码中设置:

  1. listContainer.setShaderColor(new Color(Color.getIntColor("#90EE90"))); 

效果如下图

鸿蒙轻量级数据库 DatabaseHelper基本用法

到此鸿蒙os 列表组件 ListContainer 基础知识就讲完了

最后总结

鸿蒙 os ListContainer 列表组件基本用法和Android原生的lsitview 比较像 但是比起原生安卓的listview 更加强大 原生android 并不直接支持横向滑动 以及直接支持回弹效果 ListContainer 基本用法对于安卓程序员来说比较好上手 看一下api 学习下本就能灵活运用了 以上就是我个人在学习了2天的鸿蒙os开发 ListContainer 基础总结

原文链接:https://harmonyos.51cto.com