当前位置: 首页 > news >正文

展示网站动画怎么做的wordpress获取分类目录

展示网站动画怎么做的,wordpress获取分类目录,wordpress绑定二级域名插件,网站续费方案1. 引言 最近工作有解析外部xml文件在App中显示的需求&#xff0c;特来写篇文章记录一下&#xff0c;方便下次使用。 2. 准备工作 首先&#xff0c;在项目的AndroidManifest.xml文件中添加读取外部存储的权限声明。 <uses-permission android:name"android.permiss…

1. 引言

最近工作有解析外部xml文件在App中显示的需求,特来写篇文章记录一下,方便下次使用。

2. 准备工作

首先,在项目的AndroidManifest.xml文件中添加读取外部存储的权限声明。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

3. XML示例文件

<?xml version="1.0" encoding="UTF-8"?>
<items><item><number>1</number><description>First item description</description></item><item><number>2</number><description>Second item description</description></item>
</items>

4. 请求运行时权限

在你的Activity中,需要处理运行时权限请求。

private val requestPermissionLauncher =registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted: Boolean ->if (isGranted) {readAndParseXmlFile()} else {Toast.makeText(this, "读取外部存储权限被拒绝", Toast.LENGTH_SHORT).show()}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)when {ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) ==PackageManager.PERMISSION_GRANTED -> {readAndParseXmlFile()}else -> {requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE)}}
}

5. 定义数据模型和适配器

定义一个数据类Item和一个RecyclerView的适配器ItemAdapter。

Item.kt

data class Item(val number: Int, val description: String)

ItemAdapter.kt

class ItemAdapter(private val items: MutableList<Item>) :RecyclerView.Adapter<ItemAdapter.ItemViewHolder>() {class ItemViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView)override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {val textView = LayoutInflater.from(parent.context).inflate(android.R.layout.simple_list_item_2, parent, false) as TextViewreturn ItemViewHolder(textView)}override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {val (number, description) = items[position]holder.textView.text = "$number - $description"}override fun getItemCount() = items.sizefun addItem(item: Item) {items.add(item)notifyItemInserted(items.size - 1)}
}

6. 解析XML文件

义一个方法来解析XML文件,并在解析出新数据时即时更新RecyclerView。

private fun parseXmlAndUpdateRecyclerView(inputStream: InputStream) {try {val factory = XmlPullParserFactory.newInstance()factory.isNamespaceAware = trueval parser = factory.newPullParser()parser.setInput(inputStream, null)var eventType = parser.eventTypevar currentNumber: Int? = nullvar currentDescription: String? = nullwhile (eventType != XmlPullParser.END_DOCUMENT) {when (eventType) {XmlPullParser.START_TAG -> {when (parser.name) {"number" -> currentNumber = parser.nextText().toIntOrNull()"description" -> currentDescription = parser.nextText()}}XmlPullParser.END_TAG -> {if (parser.name == "item" && currentNumber != null && currentDescription != null) {val newItem = Item(currentNumber, currentDescription)runOnUiThread {adapter.addItem(newItem)}currentNumber = nullcurrentDescription = null}}}eventType = parser.next()}} catch (e: Exception) {Log.e("XMLParser", "Error parsing XML", e)Toast.makeText(this, "解析XML文件失败: ${e.message}", Toast.LENGTH_SHORT).show()} finally {try {inputStream.close()} catch (e: Exception) {e.printStackTrace()}}
}

7. 使用

在你的代码中直接调用readAndParseXmlFile方法,我是把xml文件直接放到了 sdcard目录下了,你也可以随意修改目录,注意不同安卓版本的权限问题,

    private fun readAndParseXmlFile() {try {// 修改为从SD卡根目录获取XML文件val xmlFile = File(Environment.getExternalStorageDirectory(), "data.xml")if (!xmlFile.exists()) {Log.e("XMLParser", "File does not exist.")Toast.makeText(this, "XML文件不存在", Toast.LENGTH_SHORT).show()return}FileInputStream(xmlFile).use { fis ->parseXmlAndUpdateRecyclerView(fis)}} catch (e: Exception) {Log.e("XMLParser", "Error reading XML file", e)Toast.makeText(this, "读取XML文件失败: ${e.message}", Toast.LENGTH_SHORT).show()}}

8.效果图

在这里插入图片描述


THE END

http://www.yayakq.cn/news/495704/

相关文章:

  • 网站怎么做实名认证教做衣服的网站有哪些
  • 注册域名之后如何做网站u8无可用数据源
  • 怎么做动漫小广告视频网站中国黄页免费版
  • 天猫网站左侧菜单向右滑出的导航菜单搜索引擎网站有哪些
  • 商城用什么系统做网站wordpress vc编辑器
  • 怎么做网站投放adsensewordpress方向
  • 网站域名如何使用方法wordpress 即时预约
  • 论述题亿唐网不做网站做品牌青岛 制作网站 大点的公司
  • 网站全站搜索代码福州网站建设策划
  • 自己做网站做什么内容徐州住房和城乡建设局网站
  • 贵阳网站建设 赶集wordpress vps 安装
  • 网站底部流程网站登陆界面模板
  • 西安做网站陕西必达微信小程序推广软件
  • 泰安公司网站建设湖南做电商网站需要什么条件
  • 兰州产品营销网站建设徐州铜山区建设局网站
  • 苏州做网站建设赣州seo公司
  • 四川城乡住房和城乡建设厅网站首页wordpress+dux+高亮
  • 重庆专业网站建设首页排名怎么做手工
  • 心理网站模板三只松鼠网站建设
  • 网站文章收录慢网站开发的功能需求和模块划分
  • 做个网站网站需要多少钱智慧团建网页
  • 哪个公司做网站好佛山网页网站设计
  • 深圳专业网站建设制作互联网服务平台12123
  • 东莞长安网站优化岳阳新网网站建设有限公司
  • 百度竞价推广培训seo是什么缩写
  • 下载网站专用空间邯郸信息港最新招聘信息2023
  • 蒲城矿建设备制造厂网站太原网站排名系统
  • 手机做网站的软件怎么看网站文章的收录
  • 黄江网站设计防止入侵网站
  • 创建一个网站一个做网站的团队需要哪些人员