zoukankan      html  css  js  c++  java
  • HarmonyOS ListContainer 读取网络json数组

    1.鸿蒙权限

    2.引入包

    3.具体案例

    一 网络权限

    config.json修改节点:deviceConfig  +  reqPermissions

     "deviceConfig": {
        "default": {
          "network": {
            "//": "鸿蒙的默认是 Https 访问模式,如果您的请求网址是 Http 开头的",
            "cleartextTraffic": true
          }
        }
      }
    "reqPermissions": [
          {
            "//": "访问internet",
            "name": "ohos.permission.INTERNET"
          }
        ],

    二 引入包

    build.gradle 增加包:okhttp   +  gson  ,分别处理http和json格式化

    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    compile 'com.google.code.gson:gson:2.6.2'

    三 具体案例

    package com.example.myapplication3.bean;
    
    public class Product {
        private int id;
        private String productName;
        private float price;
        private String type;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getProductName() {
            return productName;
        }
    
        public void setProductName(String productName) {
            this.productName = productName;
        }
    
        public float getPrice() {
            return price;
        }
    
        public void setPrice(float price) {
            this.price = price;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        @Override
        public String toString() {
            return "Product{" +
                    "id=" + id +
                    ", productName='" + productName + '\'' +
                    ", price=" + price +
                    ", type='" + type + '\'' +
                    '}';
        }
    }
    package com.example.myapplication3.bean;
    
    import com.example.myapplication3.ResourceTable;
    import ohos.aafwk.ability.AbilitySlice;
    import ohos.agp.components.*;
    import ohos.hiviewdfx.HiLog;
    import ohos.hiviewdfx.HiLogLabel;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class ProductProvider extends BaseItemProvider {
        public final HiLogLabel hiLogLabel = new HiLogLabel(HiLog.LOG_APP, 0x00201, "ProductProvider");
        private List<Product> data = new ArrayList<Product>();
        private AbilitySlice slice;
    
        public ProductProvider(List<Product> data, AbilitySlice slice) {
            this.data = data;
            this.slice = slice;
        }
    
        @Override
        public int getCount() {
            return data != null ? data.size() : 0;
        }
    
        @Override
        public Object getItem(int i) {
            return data != null ? data.get(i) : null;
        }
    
        @Override
        public long getItemId(int i) {
            return i;
        }
    
        @Override
        public Component getComponent(int i, Component component, ComponentContainer componentContainer) {
            final Component cpt;
            HiLog.debug(hiLogLabel, "getComponent" + i);
            HiLog.debug(hiLogLabel, data.get(i).getProductName());
            if (component == null) {
                cpt = LayoutScatter.getInstance(slice)
                        .parse(ResourceTable.Layout_ability_main_listitem, null, false);
            } else {
                cpt = component;
            }
    
            Text id = (Text) cpt.findComponentById(ResourceTable.Id_text_id);
            Text name = cpt.findComponentById(ResourceTable.Id_text_name);
    
            id.setText(String.valueOf(data.get(i).getId()));
            name.setText(data.get(i).getProductName());
    
            return cpt;
        }
    }
    package com.example.myapplication3.slice;
    
    import com.example.myapplication3.Data.City;
    import com.example.myapplication3.ResourceTable;
    import com.example.myapplication3.bean.Product;
    import com.example.myapplication3.bean.ProductProvider;
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    import ohos.aafwk.ability.AbilitySlice;
    import ohos.aafwk.content.Intent;
    import ohos.agp.components.*;
    import ohos.hiviewdfx.HiLog;
    import ohos.hiviewdfx.HiLogLabel;
    import okhttp3.*;
    
    import java.io.IOException;
    import java.lang.reflect.Type;
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainAbilitySliceListContainer extends AbilitySlice {
    
        public final HiLogLabel hiLogLabel = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MainAbilitySliceListContainer");
        ListContainer listContainer;
    
        //http请求
        public void DoGet() {
            String url = "http://localhost:5001/products";
    
            OkHttpClient okHttpClient = new OkHttpClient().newBuilder().build();
            final Request request = new Request.Builder().url(url).build();
    
            Call call = okHttpClient.newCall(request);
    
            call.enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    HiLog.debug(hiLogLabel, "onFailure" + e.getMessage());
                }
    
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String s = response.body().string();
                    List<Product> data = new Gson().fromJson(s, new TypeToken<List<Product>>() {
                    }.getType());
    
                    HiLog.debug(hiLogLabel, "onResponse:size:" + data.size());
    
                    ProductProvider productProvider = new ProductProvider(data, MainAbilitySliceListContainer.this);
    
                    //更新ui
                    getUITaskDispatcher().asyncDispatch(new Runnable() {
                        @Override
                        public void run() {
                            listContainer.setItemProvider(productProvider);
                            productProvider.notifyDataChanged();
                        }
                    });
                }
            });
        }
    
        @Override
        protected void onStart(Intent intent) {
            super.onStart(intent);
            super.setUIContent(ResourceTable.Layout_ability_main_listcontainer);
            listContainer = (ListContainer) findComponentById(ResourceTable.Id_listcontainer1);
    
            DoGet(); //http请求
        }
    
        @Override
        protected void onActive() {
            super.onActive();
        }
    
        @Override
        protected void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    <?xml version="1.0" encoding="utf-8"?>
    <DirectionalLayout
        xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:alignment="center"
        ohos:orientation="vertical">
    
       <ListContainer
           ohos:id="$+id:listcontainer1"
           ohos:height="match_content"
           ohos:layout_alignment="center"
           ohos:width="match_parent">
       </ListContainer>
    
    </DirectionalLayout>
    <?xml version="1.0" encoding="utf-8"?>
    <DirectionalLayout
        xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:alignment="center"
        ohos:orientation="vertical">
    
        <DirectionalLayout
            ohos:height="match_parent"
            ohos:width="match_parent"
            ohos:alignment="center"
            ohos:orientation="horizontal">
    
            <Text
                ohos:id="$+id:text_id"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:text=""
                ohos:text_size="40vp"
                />
    
            <Text
                ohos:id="$+id:text_name"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:text=""
                ohos:text_size="40vp"
                />
        </DirectionalLayout>
    
        <Component
            ohos:height="1vp"
            ohos:width="match_parent"
            ohos:background_element="gray"></Component>
    </DirectionalLayout>

     

    天生我材必有用,千金散尽还复来
  • 相关阅读:
    Spark集群搭建步骤
    Hadoop集群搭建步骤
    Linux上传与下载(sz-rz)
    Spark文档
    Hadoop基本命令详解
    lzo压缩格式文件查看
    hadoop端口配置指南
    eclipse无法连接到makertplace
    Socket 服务端使用多线程实现多客户端通讯实例
    Jenkins和Sonar集成
  • 原文地址:https://www.cnblogs.com/ligenyun/p/15600397.html
Copyright © 2011-2022 走看看