【问题标题】:Simple way to load remote json file into Android app ?(video view)将远程 json 文件加载到 Android 应用程序的简单方法?(视频视图)
【发布时间】:2020-10-23 21:29:58
【问题描述】:

我想以与 Swift 对应的方式相同的方式运行它。在 Swift 版本中,我将 json 加载到解析器中,该解析器在 id 中加载列表(从最高到最低)并显示缩略图和标题(由 json 提供),单击时会显示附加 ID 的视频。

我目前没有看到与 SwiftUI(特别是列表视图)设置类似的东西,如果您能提供任何资源或示例,我将不胜感激。

这是 SwiftUI 文件之一

import SwiftUI
import Combine

struct VideoList: View {
@Environment(\.presentationMode) private var presentationMode
@ObservedObject private(set) var viewModel: ViewModel
@State private var isRefreshing = false

var btnBack : some View { Button(action: {
    self.presentationMode.wrappedValue.dismiss()
    }) {
        HStack {
        Image("Home") // set image here
            .aspectRatio(contentMode: .fit)
            .foregroundColor(.white)
        }
    }
}

var body: some View {
    NavigationView {
        List(viewModel.videos.sorted { $0.id > $1.id}, id: \.id) { video in
            NavigationLink(
            destination: VideoDetails(viewModel: VideoDetails.ViewModel(video: video))) {
                VideoRow(video: video)
                
            }
        }
        .onPullToRefresh(isRefreshing: $isRefreshing, perform: {
            self.viewModel.fetchVideos()
        })
        .onReceive(viewModel.$videos, perform: { _ in
            self.isRefreshing = false
        })
    }
    .onAppear(perform: viewModel.fetchVideos)
    .navigationViewStyle(StackNavigationViewStyle())
    .navigationBarBackButtonHidden(true)
            .navigationBarItems(leading: btnBack)

}
}

这是一个来自它正在加载的 json 的剪辑

{
"videos": [
    {
        "id": 97,
        "name": "name",
        "thumbnail": "https://videodelivery.net//thumbnails/thumbnail.jpg",
        "description": "October 11th, 2020",
        "video_link": "https://videodelivery.net//manifest/video.m3u8"
    },
    {
        "id": 96,
        "name": "name",
        "thumbnail": "https://videodelivery.net//thumbnails/thumbnail.jpg",
        "description": "October 11th, 2020",
        "video_link": "https://videodelivery.net//manifest/video.m3u8"
    },

【问题讨论】:

  • 你有什么视频..是你的网址吗??
  • Json 文件如 @RishabhRitweek 所述,这样我们就可以添加每周视频而无需更新
  • 试试我的答案,让我知道它是否有效
  • 对不起,我看到你有一个单独的缩略图网址。我正在更新我的答案
  • 我正在向它倾销项目upwork.com/jobs/~01f04407ca3367419d

标签: java android json kotlin cloudflarestream


【解决方案1】:

https://riptutorial.com/android/example/29241/try-offline-disk-cache-first--then-go-online-and-fetch-the-image

这是缓存缩略图的一个很好的例子,按照这个,唯一的改变是:你在适配器的getView方法中编写picasso.load。只需设置imageview sing Picasso。现在,你可以在列表视图时传递视频url通过使用 onItemCLickListener 内部的意图进行点击,然后在目标活动中,您可以拥有一个 medi 播放器,您可以在其中使用该 url 将其设置在 medi 播放器上并播放视频。

此解决方案也适用于列表。

此外,由于 picasso 默认使用内存缓存,我们也必须使用 OKHTTP 磁盘缓存,因为否则 Picaso 只会检查内存缓存中的缩略图并且会失败。

【讨论】:

  • 问题不在于获取图像。它正在获取图像,将它们放入更新的列表结构中,然后使它们可点击以播放我正在努力解决的相关内容。如果不是很明显,我不会对 android 做太多事情,因此不知道从哪里开始。
  • 如果你已经完美地实现了缓存,为什么它不会更新..你如何尝试播放视频..如果你有一个远程 url,你可以简单地通过意图传递该远程 url 并将其设置为MediaPlayer 在说另一个活动..如果你的意思是更新列表有什么不同,你能解释一下吗??
  • 但它需要在列表中。再次,主要问题是我不确定从 json 加载列表的最佳和资源最少的方法是什么,显示提供的图像和名称,但点击播放默认播放器中的相关内容,就像 iOS 一样。 @RishabhRitweek 更新:每周都会有一个新视频,因此 json 将被更新,以便用户可以看到新内容
  • 一秒钟,我看到你已经有一个缩略图的 url ..所以更新我的答案..这应该工作
  • 更新后的答案并不完全是我遇到的问题。将图像和名称从 json 加载到列表中很简单(但是我对完成第二部分所需的任何方式持开放态度)第二部分是如何在单击以在本机播放器中加载视频文件时获取此类项目(如 iOS)“video_link”:“videodelivery.net//manifest/video.m3u8
猜你喜欢
  • 1970-01-01
  • 2017-09-23
  • 2023-03-08
  • 2011-05-28
  • 2014-07-15
  • 2018-05-11
  • 2014-01-16
  • 2012-02-09
  • 1970-01-01
相关资源
最近更新 更多