【问题标题】:Changing edit screen according to selected item in recycler view根据回收站视图中的选定项目更改编辑屏幕
【发布时间】:2019-09-18 07:06:23
【问题描述】:

我有如下流程

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

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

  • 在单个布局中扩展编辑屏幕中的所有视图,并根据单击的项目将视图的可见性设置为View.GONE
  • 为每个编辑屏幕使用单独的片段。
    • 专业版:未为未使用的视图分配堆
    • 缺点:多个片段、布局

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

【问题讨论】:

    标签: android performance android-databinding android-inflate maintainability


    【解决方案1】:

    首先更好的方法是使用单独的片段。它将有助于分离代码并用更少的行轻松维护它。您还可以创建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>
    

    【讨论】:

    • 我也在考虑动态通货膨胀,但我不能以这种方式使用数据绑定。我想使用数据绑定。
    • 您可以在其中使用数据绑定。请检查更新的答案。
    猜你喜欢
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多