Android:如何在没有滚动功能的情况下显示列表中的所有项目

Android:如何在没有滚动功能的情况下显示列表中的所有项目,android,listview,kotlin,android-recyclerview,Android,Listview,Kotlin,Android Recyclerview,我想显示类似于RecyclerView的内容,但大小会根据列表中的项目数量动态变化。每个项目都显示在项目的视图中。视图中不需要任何滚动,因为列表视图的高度设置为有多少个项目视图的总高度 目前,我正在使用RecyclerView和setHasFixedSize=false,正如您在这段代码中看到的: recyclerview.apply { layoutManager = LinearLayoutManager(rootView.context) a

我想显示类似于
RecyclerView
的内容,但大小会根据列表中的项目数量动态变化。每个项目都显示在项目的
视图中
。视图中不需要任何滚动,因为列表视图的高度设置为有多少个项目视图的总高度

目前,我正在使用
RecyclerView
setHasFixedSize=false
,正如您在这段代码中看到的:

recyclerview.apply {
            layoutManager = LinearLayoutManager(rootView.context)
            adapter = PlanAdapter(dateItem.planItems)
            setHasFixedSize(false)
}
在第一个项目之后不显示任何项目。下面是一个示例屏幕,我在其中实现了它:


蓝色高亮显示这些项目在本地存储中存在,但我制作的动态回收视图未显示这些项目。有一个比创建一个完整的
RecyclerView
更好的选择,但是,对吗?

如果您只想实现禁用循环器的滚动,您可以通过编程方式或通过RecyclerView的XML调用
android:nestedScrollingEnabled=“false”
来实现这一点

现在,如果您不想为此使用recyclerview,您可以使用一个自定义视图来扩展您的布局,例如

public class AllergenView extends LinearLayout {

    private View rootView;
    private ImageView icon;
    private String allergenTag;
    Activity mActivity;

    public AllergenView(Activity activity, String allergenTag) {
        super(activity);
        this.mActivity = activity;
        this.allergenTag = allergenTag;

        init(activity);
    }

    public AllergenView(Context context, AttributeSet attrs) 
    {
        super(context, attrs);
    }

    private void init(Context context) {

        rootView = inflate(context, R.layout.view_allergen_icon, this);

        // Bind views
        icon = (ImageView) findViewById(R.id.img_icon);
    }
这样称呼

for (Allergen a : recipe.getAllergen()) {

                View v1 = new AllergenView(mActivity, Utils.toString(a.getAllergen()));
            holder.linearLayoutHorizontal.addView(v1);

        }
    }

如果您只想实现禁用回收器的滚动,那么可以通过编程或通过recyclerView的XML调用
android:nestedScrollingEnabled=“false”

现在,如果您不想为此使用recyclerview,您可以使用一个自定义视图来扩展您的布局,例如

public class AllergenView extends LinearLayout {

    private View rootView;
    private ImageView icon;
    private String allergenTag;
    Activity mActivity;

    public AllergenView(Activity activity, String allergenTag) {
        super(activity);
        this.mActivity = activity;
        this.allergenTag = allergenTag;

        init(activity);
    }

    public AllergenView(Context context, AttributeSet attrs) 
    {
        super(context, attrs);
    }

    private void init(Context context) {

        rootView = inflate(context, R.layout.view_allergen_icon, this);

        // Bind views
        icon = (ImageView) findViewById(R.id.img_icon);
    }
这样称呼

for (Allergen a : recipe.getAllergen()) {

                View v1 = new AllergenView(mActivity, Utils.toString(a.getAllergen()));
            holder.linearLayoutHorizontal.addView(v1);

        }
    }

您好@fawwaz,不确定是否理解您的问题,所以我可以得到一些澄清吗?你不希望整个页面能够滚动,或者仅仅是列表?你根本不想在这个问题上使用recyclerview?是动态更改的列表大小还是列表中的每个项目?你能事先知道会展示多少个项目吗?它们是很多还是只有几个?你能不能用线性布局来显示这些项目?即使项目的数量并不总是相同,您也可以根据视图的数量以编程方式绘制此布局。谢谢。我不希望列表视图滚动,但是如果需要,页面可以滚动。我只是觉得做一个recyclerview并不是最好的解决方案。这个列表从0个条目开始,用户可以从应用程序中创建一个新条目。如何以编程方式绘制此布局?是否每次创建一个项目时都只是添加一个线性布局?谢谢,我明白了。好的,recyclerViews的性能通常非常好,但是您可以通过
android:nestedScrollingEnabled=“false”
禁用它们的滚动,并将其留给视图的父视图。是的,您可以通过使用自定义项以编程方式向布局中添加新项来以编程方式绘制布局。如果我找到了一个样本,我会把它贴在这里。嗨@fawwaz,不确定是否理解你的问题,所以我可以得到一些澄清吗?你不希望整个页面能够滚动,或者仅仅是列表?你根本不想在这个问题上使用recyclerview?是动态更改的列表大小还是列表中的每个项目?你能事先知道会展示多少个项目吗?它们是很多还是只有几个?你能不能用线性布局来显示这些项目?即使项目的数量并不总是相同,您也可以根据视图的数量以编程方式绘制此布局。谢谢。我不希望列表视图滚动,但是如果需要,页面可以滚动。我只是觉得做一个recyclerview并不是最好的解决方案。这个列表从0个条目开始,用户可以从应用程序中创建一个新条目。如何以编程方式绘制此布局?是否每次创建一个项目时都只是添加一个线性布局?谢谢,我明白了。好的,recyclerViews的性能通常非常好,但是您可以通过
android:nestedScrollingEnabled=“false”
禁用它们的滚动,并将其留给视图的父视图。是的,您可以通过使用自定义项以编程方式向布局中添加新项来以编程方式绘制布局。如果我找到了一个示例,我将在这里发布。将添加到线性布局的视图设置为等权重,以便视图平等地共享垂直空间将添加到线性布局的视图设置为等权重,以便视图平等地共享垂直空间