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

时间:2019-02-04 04:07:02

标签: android listview kotlin android-recyclerview recycler-adapter

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

当前,我正在将RecyclerViewsetHasFixedSize = false一起使用,如您在以下代码片段中所见:

recyclerview.apply {
            layoutManager = LinearLayoutManager(rootView.context)
            adapter = PlanAdapter(dateItem.planItems)
            setHasFixedSize(false)
}

在第一个之后没有显示任何项目。这是我实现它的示例屏幕:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

如果只是要禁用回收站的滚动,则可以通过以编程方式或通过XML为recyclerView调用android:nestedScrollingEnabled="false"来实现。

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

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);

        }
    }