HarmonyOS 鸿蒙Next Listcontainer问题

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Listcontainer问题 红报错:E/AGP: Physical Scroll: Inavailable axis: 0, should use start functions first

E/EGL_emulation: eglQuerySurface 313d EGL_BAD_ATTRIBUTE

设置list数为20但界面内只显示至4。

页面代码:

package com.example.kaoyanapplication.slice;
import com.example.kaoyanapplication.ResourceTable;
import com.example.kaoyanapplication.domain.Chatitem;
import com.example.kaoyanapplication.provide.Chatprovider;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.ListContainer;
import java.util.ArrayList;
public class FriendsSlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_friends);
        ListContainer listContainer=(ListContainer)findComponentById(ResourceTable.Id_listcontainer);
        ArrayList<Chatitem> datalist=getData();
        Chatprovider chatprovider=new Chatprovider(datalist,this);
        listContainer.setItemProvider(chatprovider);
    }
    public ArrayList<Chatitem> getData(){
        ArrayList<Chatitem> list=new ArrayList<>();
        for (int i=0;i<20;i++){
            list.add(new Chatitem("内容","00:0"+i));
        }
        return list;
    }
    @Override
    public void onActive() {
        super.onActive();
    }
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

itemprovider代码:

public Component getComponent(int i, Component component, ComponentContainer componentContainer) {
    DirectionalLayout dl;
    if(component==null) {
     dl = (DirectionalLayout) LayoutScatter.getInstance(as).parse(ResourceTable.Layout_postview, null, false);
   }else{
        dl=(DirectionalLayout) component;
   }
    Postitem postitem=list.get(i);
    Text title=(Text) dl.findComponentById(ResourceTable.Id_title);
    Text pmain=(Text) dl.findComponentById(ResourceTable.Id_pmain);
    title.setText(postitem.getTitle());
    pmain.setText(postitem.getPmain());
    return dl;
}

更多关于HarmonyOS 鸿蒙Next Listcontainer问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

是因为组件listcontainner的xml的高度要设置清楚

更多关于HarmonyOS 鸿蒙Next Listcontainer问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主,请仔细看看你的xml文件的布局和官方示例里的区别,我之前和你有一样的问题,现在在更改了xml里的height这个属性之后,就可以正常显示了。

请问楼主解决了吗?我也有这个问题。解决了的话,能否告知我一下呢,多谢

看看你listContainer的布局是否正确

楼主你好,请参考Codelabs官网分布式新闻客户端中ListContainer的用法: https://gitee.com/harmonyos/harmonyos_codelabs/tree/master/HarmonyOSNewsClient

package com.example.kaoyanapplication.provide;
import com.example.kaoyanapplication.ResourceTable;
import com.example.kaoyanapplication.domain.Postitem;
import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.components.*;
import java.util.ArrayList;

public class Postprovider extends BaseItemProvider {
    private ArrayList<Postitem> list;
    private AbilitySlice as;

    public Postprovider(ArrayList<Postitem> list, AbilitySlice as) {
        this.list = list;
        this.as = as;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        if(list != null && i >= 0 && i < list.size()){
            return list.get(i);
        }
        return null;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public Component getComponent(int i, Component component, ComponentContainer componentContainer) {
        DirectionalLayout dl;
        if(component == null) {
            dl = (DirectionalLayout) LayoutScatter.getInstance(as).parse(ResourceTable.Layout_postview, null, false);
        } else {
            dl = (DirectionalLayout) component;
        }
        Postitem postitem = list.get(i);
        Text title = (Text) dl.findComponentById(ResourceTable.Id_title);
        Text pmain = (Text) dl.findComponentById(ResourceTable.Id_pmain);
        title.setText(postitem.getTitle());
        pmain.setText(postitem.getPmain());
        return dl;
    }
}

itemprovider代码没有贴完吧

我以为只有这个会影响到,全部的刚刚发了,谢谢大佬,

昨天还能显示到4,今天只能显示到3了,

欢迎开发小伙伴们进来帮帮楼主

针对HarmonyOS(鸿蒙)中的Next Listcontainer问题,这里提供直接且专业的回答:

在HarmonyOS系统中,Next Listcontainer通常指的是在列表容器组件中,用于展示下一页或下一组数据的功能或区域。如果遇到与Next Listcontainer相关的问题,可能涉及数据加载、页面切换或组件渲染等方面。

  1. 数据加载问题:确保数据接口稳定,数据格式正确,且数据加载逻辑无误。检查是否有网络延迟或数据丢失的情况。

  2. 页面切换问题:验证页面切换逻辑是否正确实现,包括事件监听、状态管理以及页面跳转指令的执行。

  3. 组件渲染问题:检查Listcontainer组件的渲染逻辑,确保在数据更新时能够正确触发重新渲染。同时,注意组件的生命周期管理,避免内存泄漏或渲染异常。

  4. 性能优化:对于大数据量的列表,考虑实现分页加载或懒加载策略,以减少内存占用和提高渲染效率。

如果以上方法无法解决问题,可能涉及更复杂的系统级或框架级问题。此时,建议详细查看HarmonyOS的官方文档,或直接在开发环境中进行调试,以获取更具体的错误信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部