Android:设置自定义列表项的可能/智能方法? (或者方便的方法来设置重复使用的布局)

时间:2019-04-15 09:04:43

标签: java android android-layout

概述

随着UI变得越来越复杂-但同时仍要重复进行某些操作,include视图组件(或Java中带有RecyclerView的{​​{1}})可能是最好的解。 但是,由于这些部分是静态的和特定的,所以我想知道是否有一种方法可以以仅XML /可编辑预览的样式构建这些UI?


示例

下面是一个更详细的问题:我想建立一个设置页面,其中包含以下内容: enter image description here

布局应该是一个列表,其中填充有项目-每个项目都有图标,文本和箭头。

我该怎么办?

我首先想到的是使用Adapter

步骤1

我为单个项目名称include(以下是简化版本)构建布局:

item_option_standard.xml

步骤2

并通过将<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/background_light"> <ImageView android:id="@+id/itemIcon" /> <TextView android:id="@+id/itemTitle" /> <TextView android:id="@+id/itemSubtitle" /> <ImageButton android:id="@+id/itemNext" /> <View android:id="@+id/divider" /> </android.support.constraint.ConstraintLayout> 放入我的include中来重新使用它:

ScrollView

在编辑器中,显示为:

enter image description here

步骤3

最后一步是逐步修改内容。我写了一个辅助函数:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <include
            android:id="@+id/optMyCash"
            layout="@layout/item_option_standard"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <include
            android:id="@+id/optHistory"
            layout="@layout/item_option_standard"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <include
            android:id="@+id/optAnnouncement"
            layout="@layout/item_option_standard"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <!-- and so on... -->

    </LinearLayout>
</ScrollView>

并在我的public static void SetupOption(@NonNull View itemView, @DrawableRes int iconId, @NonNull String itemTitle, View.OnClickListener onClickListener) { ImageView iconView = itemView.findViewById(R.id.itemIcon); iconView.setImageResource(iconId); TextView titleView = itemView.findViewById(R.id.itemTitle); titleView.setText(itemTitle); itemView.setOnClickListener(onClickListener); } 中使用它:

OnCreate

问题

是否有其他方法可以执行“第3步”?尤其是,是否有可能以xml /更静态/编辑器可预览的方式做到这一点?无法在编辑器中预览超出范围的方法,并且这种方法难以查看,难以维护(还有某种效率低下的东西?)

1 个答案:

答案 0 :(得分:1)

您必须动态添加视图。并将标签设置为您要用于click事件的视图,在click事件中,您将获得一个视图,并且只需获取标签即可区分click事件。 see here
-如果您遇到ERROR或其他问题,请在下面进行注释。