《农物购》app开发技术分享《五》-- HarmonyOS 鸿蒙Next资讯中心列表&资讯详情

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

《农物购》app开发技术分享《五》-- HarmonyOS 鸿蒙Next资讯中心列表&资讯详情

在上一节我们在首页新增了资讯中心的模块,首页的内容越来越丰富了,这一节针对资讯中心模块的一些跳转功能,做一个进一步的延伸,我们知道资讯中心模块分为上下两部分,那么我们的上下两部分的点击事件响应也是不一样的,头部的点击相应是跳转到资讯列表页,再次点击列表,跳转到新闻详情页面,而下半部分的资讯条目点击之后是直接跳转到对应的新闻页面的。接下来我们来看一下我们要实现的成品是什么样式

资讯列表页

cke_7853.jpeg

可以看到是列表类型的一个页面,当点击条目的时候跳转到新闻详情,我们看一下新闻详情页面

cke_15656.jpeg

这样的话,那我们要实现的内容也非常的清晰了。

我们直接先创建一个新的页面来加载对应的资讯列表

然后我们在头布局的地方添加跳转代码

.onClick(()=>{
router.pushUrl({url:“pages/NewListPage”})
})

这样就能实现一个点击跳转的功能

然后实现列表代码,在条目中也添加跳转逻辑,跳转到详情页面

import { router } from ‘@kit.ArkUI’

@Entry @Component struct NewListPage { private imgList:ESObject[]=[ {“img”:https://inews.gtimg.com/om_bt/OtwKRSDaiFoI7MaxtLQAjKPk9HFwww6tMYybn1BjzxWCEAA/641 , “title”:“蔬菜也能“紫气东来”?”, “timeStr”:“2024-12-31”, “url”:https://news.qq.com/rain/a/20241231A04JV800},

{<span class="hljs-string">"img"</span>:<span class="hljs-string">"https://inews.gtimg.com/om_bt/O-8DmkSZrXGMvRVD0SCG6VDXdQoF0zXmTJZA1AwTaNZhMAA/641"</span> ,
  <span class="hljs-string">"title"</span>:<span class="hljs-string">"洪山菜薹成江城蔬菜顶流"</span>,
  <span class="hljs-string">"timeStr"</span>:<span class="hljs-string">"2024-12-30"</span>,
  <span class="hljs-string">"url"</span>:<span class="hljs-string">"https://news.qq.com/rain/a/20241230A01SRF00"</span>}

] build() { Column() { Text(“资讯中心”) .width(‘100%’) .height(45) .fontSize(20) .textAlign(TextAlign.Center) List({space:10}) { ForEach(this.imgList, (item: ESObject, index: number) => { ListItem(){ Column(){ Image(item.img).width(‘100%’).height(120) .borderRadius(10) Text(item.title) .fontSize(16) .margin({top:10})

          Text(item.timeStr)
            .margin({top:<span class="hljs-number">5</span>})

        }
        .onClick(()=&gt;{
          router.pushUrl({
            url:<span class="hljs-string">"pages/WebDetailsPage"</span>,
            params:item})
        })
        .alignItems(HorizontalAlign.Start)
        .padding(<span class="hljs-number">10</span>)
      }
    })
  }
}
.height(<span class="hljs-string">'100%'</span>)
.width(<span class="hljs-string">'100%'</span>)

} }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

这样我们资讯中心列表页面就实现了列表的展示,保存代码看一下预览器效果

cke_57420.png

可以看到列表已经展示出来了,接下来实现点击跳转到资讯详情页面

我们还需要新建一个资讯详情页面,代码实现如下

{“img”:“https://inews.gtimg.com/om_bt/O-8DmkSZrXGMvRVD0SCG6VDXdQoF0zXmTJZA1AwTaNZhMAA/641” ,
“title”:“洪山菜薹成江城蔬菜顶流”,
“timeStr”:“2024-12-30”,
“url”:“https://news.qq.com/rain/a/20241230A01SRF00”}
从数据源中我们可以看到有url字段,数据源中的字段是一个链接,那我们用webview来执行链接的加载,首先在列表条目上添加一个跳转传值的方法
.onClick(()=>{
router.pushUrl({
url:“pages/WebDetailsPage”,
params:item})
})
把当前的对象传递过去
然后在新的页面进行接收和webview对链接的加载,因为加载的链接,在webview中注意添加配置避免白屏

实现详情页面逻辑

import { webview } from ‘@kit.ArkWeb’;
import { router } from ‘@kit.ArkUI’;

@Entry @Component struct WebDetailsPage {

@State urls: ESObject= null!; @State mode: MixedMode = MixedMode.All; aboutToAppear(): void { this.urls= router.getParams() as ESObject }

webController: webview.WebviewController = new webview.WebviewController(); build() { Column() { Web({ src:this.urls.url, controller: this.webController }) .height(‘100%’) .width(‘100%’) .mixedMode(this.mode) .domStorageAccess(true)

}
.height(<span class="hljs-string">'100%'</span>)
.width(<span class="hljs-string">'100%'</span>)

} }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

这时候点击一条信息,展示如下

cke_115846.jpeg

可以看到已经正确的展示资讯的详细内容了


更多关于《农物购》app开发技术分享《五》-- HarmonyOS 鸿蒙Next资讯中心列表&资讯详情的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

后续还会更新不?

更多关于《农物购》app开发技术分享《五》-- HarmonyOS 鸿蒙Next资讯中心列表&资讯详情的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


会的,会做一个完整的应用,后续还会出视频。 ui和逻辑也都会写的复杂一些

在《农物购》app开发技术分享系列之五中,针对HarmonyOS(鸿蒙)Next资讯中心列表及资讯详情功能的实现,我们可以利用鸿蒙系统提供的ArkUI框架进行UI设计,同时结合分布式数据管理和组件化开发能力来提升应用体验。

对于资讯中心列表,可以通过ArkUI的List组件来展示多条资讯,每条资讯包含标题、摘要和图片等基本信息。在数据层,可以通过鸿蒙的分布式数据管理功能,实现数据的跨设备同步和高效访问。

资讯详情页面则可以通过ArkUI的Page组件进行构建,页面内包含资讯的完整内容、发布时间、来源等详细信息。同时,可以利用鸿蒙的组件化开发能力,将资讯详情页面的各个部分(如标题栏、内容区、评论区等)封装成独立的组件,提高代码的可复用性和可维护性。

在实现过程中,需要注意鸿蒙系统的权限管理和安全机制,确保应用能够合法地访问用户数据和系统资源。此外,还需要关注鸿蒙系统的适配性和兼容性,确保应用能够在不同型号和版本的鸿蒙设备上正常运行。

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

回到顶部