繁体   English   中英

根据回收者视图中的选定项目更改编辑屏幕

[英]Changing edit screen according to selected item in recycler view

我有下面的流程

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

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

  • 在单一布局中将编辑屏幕中的所有视图膨胀, View.GONE根据单击的项目将视图的可见性设置为View.GONE
  • 为每个编辑屏幕使用单独的片段。
    • 优点:堆未分配给未使用的视图
    • 缺点:多个片段,布局

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM