项目实训第二周第三篇


鸿蒙前端ListContainer的运用


1.在member_management.xml中添加ListContainer元素。

 <ListContainer
                ohos:width="match_parent"
                ohos:height="match_content"
                ohos:background_element="#FFFFFFFF"
                ohos:id="$+id:list_container_member"
                >

            </ListContainer>

2.SampleItemProvider.java,用于给listContainer提供实体类对象。

SampleItemProvider.java代码:

import com.chinasofti.smartclassroomtv.ResourceTable;
import com.chinasofti.smartclassroomtv.data.SampleItem;
import com.chinasofti.smartclassroomtv.data.SampleItemProvider;
import com.chinasofti.smartclassroomtv.demain.Question;
import ohos.aafwk.ability.fraction.Fraction;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.*;
import ohos.agp.window.dialog.ToastDialog;

import java.util.ArrayList;
import java.util.List;

public class Member_management extends Fraction {
    private ListContainer listContainer;
    private Button aft;
    private Button pre;
    private Button search_btn;
    private Button return_btn;
    private Button show_add_student_frame;
    private Button close_add_student_frame;
    private Button add_student_btn;
    private TextField id_input;
    private DependentLayout add_student_frame;
    private TextField search_tf;
    private int page = 1;
    private Text page_text;
    private Button delete_btn;
    List<SampleItem> list;
    SampleItemProvider sampleItemProvider;

    @Override
    protected Component onComponentAttached(LayoutScatter scatter, ComponentContainer container, Intent intent) {
        Component component=scatter.parse(ResourceTable.Layout_menber_management,container,false);
        return  component;
    }

    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        listContainer= (ListContainer)
                getFractionAbility().findComponentById(ResourceTable.Id_list_container_member);
        list = getData(page);
        sampleItemProvider = new SampleItemProvider(getPageData(page), getFractionAbility());
        listContainer.setItemProvider(sampleItemProvider);

        add_student_frame = (DependentLayout)
                getFractionAbility().findComponentById(ResourceTable.Id_add_student_frame);

        close_add_student_frame = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_cancle);

        close_add_student_frame.setClickedListener(lis->{
            //显示添加学生界面
            add_student_frame.setVisibility(1);

        });

        show_add_student_frame = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_btn_add_student);

        show_add_student_frame.setClickedListener(lis->{
            //显示添加学生界面
            add_student_frame.setVisibility(0);

        });

        return_btn = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_btn_return);

        return_btn.setClickedListener(lis->{
            sampleItemProvider = new SampleItemProvider(getPageData(page), getFractionAbility());
            listContainer.setItemProvider(sampleItemProvider);
        });

        add_student_btn = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_add_btn);

        id_input = (TextField)
                getFractionAbility().findComponentById(ResourceTable.Id_id_input);

        //在这里添加学生
        add_student_btn.setClickedListener(lis->{
            String id = id_input.getText();
            if(id.equals(null))
                return;
            SampleItem sampleItem = new SampleItem("name",id);
            list.add(sampleItem);
            sampleItemProvider = new SampleItemProvider(getPageData(page), getFractionAbility());
            listContainer.setItemProvider(sampleItemProvider);
            add_student_frame.setVisibility(1);
        });


        search_btn = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_btn_search);

        search_tf = (TextField)
                getFractionAbility().findComponentById(ResourceTable.Id_search);

        search_btn.setClickedListener(lis->{
            String nameOrId = search_tf.getText();
            ArrayList<SampleItem> search_result = new ArrayList<>();
            for (int i=0;i<list.size();i++){
                SampleItem sampleItem = list.get(i);
                if (sampleItem.getId().equals(nameOrId)||sampleItem.getName().equals(nameOrId)){
                    search_result.add(sampleItem);
                }
            }

//            if (search_result.size()==0){
                new ToastDialog(getContext()).setText("无搜索结果").show();
//                return;
//            }

            sampleItemProvider = new SampleItemProvider(search_result, getFractionAbility());
            listContainer.setItemProvider(sampleItemProvider);
        });

        delete_btn = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_delete);

        delete_btn.setClickedListener(lis->{
            int len = (Math.min(list.size(),page*14) - (page-1)*14);
            int count = 0;
            for (int i = 0; i< len ; i++ ){
                Checkbox cb = (Checkbox) listContainer.getComponentAt(i).findComponentById(ResourceTable.Id_item_name);
                if (cb.isChecked()){
                    list.remove((page-1)*14 + (i-count));
                    count++;
                }
            }
            sampleItemProvider = new SampleItemProvider(getPageData(page), getFractionAbility());
            listContainer.setItemProvider(sampleItemProvider);
        });


        page_text = (Text)
                getFractionAbility().findComponentById(ResourceTable.Id_page);
        page_text.setText(""+page);

        aft = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_aft);

        aft.setClickedListener(lis->{
            if ((page)*14 >= list.size())
                return;
            sampleItemProvider = new SampleItemProvider(getPageData(++page), getFractionAbility());
            listContainer.setItemProvider(sampleItemProvider);
            page_text.setText(""+page);
        });

        pre = (Button)
                getFractionAbility().findComponentById(ResourceTable.Id_pre);

        pre.setClickedListener(lis->{
            if (page<=1)
                return;
            sampleItemProvider = new SampleItemProvider(getPageData(--page), getFractionAbility());
            listContainer.setItemProvider(sampleItemProvider);
            page_text.setText(""+page);
        });

    }

    //从后端数据库获得所有学生信息,保存到list
    private ArrayList<SampleItem> getData(int page) {
        ArrayList<SampleItem> list = new ArrayList<>();
        for (int i = 1; i <= 45; i++) {
            list.add(new SampleItem("姓名"+i,"id"+i));
        }
        return list;
    }

    //从list获取一页的学生信息,不连接后端
    private ArrayList<SampleItem> getPageData(int page) {
        ArrayList<SampleItem> list2 = new ArrayList<>();
        for (int i = (page-1)*14; i < Math.min(list.size(),page*14); i++) {
            list2.add(list.get(i));
        }
        return list2;
    }

}

初始化ListContainer:

listContainer= (ListContainer)getFractionAbility().findComponentById(ResourceTable.Id_list_container_member);
list = getData(page);
sampleItemProvider = new SampleItemProvider(getPageData(page), getFractionAbility());
listContainer.setItemProvider(sampleItemProvider);

3.SampleItem.java,是ListContainer中要添加的实体类。

public class SampleItem {
    private String name;
    private String Id;

    public SampleItem(String name,String Id) {
        this.name = name;
        this.Id = Id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return Id;
    }
    public void setId(String Id) {
        this.Id = Id;
    }
}

4.item_sample.xml文件,实体类SampleItem的布局文件

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_content"
    ohos:width="match_parent"
    ohos:orientation="horizontal"
    ohos:background_element="#FF00FF04">

    <Checkbox
        ohos:id="$+id:item_name"
        ohos:height="match_content"
        ohos:weight="1"
        ohos:width="0vp"
        ohos:text="Name"
        ohos:left_margin="16vp"
        ohos:text_size="10fp" />


    <Text
        ohos:id="$+id:item_id"
        ohos:height="match_content"
        ohos:weight="1"
        ohos:width="0vp"
        ohos:padding="4vp"
        ohos:text="Id"
        ohos:text_size="10fp"
        ohos:left_margin="10vp"
        ohos:text_alignment="center"/>

    <Button
        ohos:id="$+id:item_oprate"
        ohos:height="match_content"
        ohos:weight="1"
        ohos:width="0vp"
        ohos:padding="4vp"
        ohos:text="Op"
        ohos:left_margin="10vp"
        ohos:text_size="10fp"
        ohos:text_alignment="center"/>


</DirectionalLayout>

5.演示

图中绿色部分即为ListContainer实现,数据是自动生成的,翻页会用新数据重新加载ListContainer:在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值