首页 > 解决方案 > 根据回收站视图中的选定项目更改编辑屏幕

问题描述

我有如下流程

recyclerview --- 单击项目 ---> 详细屏幕 --- 单击编辑选项菜单项 ---> 编辑屏幕

根据用户单击的 recyclerview 项目,此处的字段显示在编辑屏幕更改。我在我的项目中使用数据绑定,所以有两种方法可以处理这种情况。

在性能、代码可维护性方面哪个更好?还有其他方法吗?

标签: androidperformanceandroid-databindingandroid-inflatemaintainability

解决方案


首先,更好的方法是使用单独的片段。它将有助于分离代码并用更少的行轻松维护它。您还可以创建BaseFragment常用方法,以使代码更清晰,片段中更少。

另一方面,如果您使用 View Visible and Gone 方法而不是堆问题。您可以减少此问题以动态添加视图。

您可以使用一个空容器并根据您的情况添加视图。您必须为每个视图创建单独的布局文件。

添加空容器

                 <FrameLayout
                    android:id="@+id/container"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.0"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />   

动态添加视图

 val view = inflater.inflate(
                        R.layout.file_name, null)
container.addView(view)

这样您就不需要根据条件隐藏或显示来查看。您只需要根据您的要求添加视图。

但是您必须在一个文件中为这两种布局编写代码。

对于数据绑定:

val view = inflater.inflate(
                        R.layout.row_article_home, null)
                val binding = DataBindingUtil.bind<RowArticleHomeBinding>(view)!!
binding.arg = "xyz"
container.addView(view) or container.addView(binding.rootView)

行文章视图

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
      <variable
            name="arg"
            type="String" />
    </data>

<androidx.cardview.widget.CardView/>

</layout>

推荐阅读