ListView获取所有子视图(在屏幕上和屏幕外)

时间:2018-10-10 18:14:16

标签: android

我正在尝试迭代列表视图的所有子视图,包括不在屏幕上的子视图(直到滚动为止不可见),但它仅返回在屏幕上(可见)的那些子视图。

Button btnAddToCart = (Button) findViewById(R.id.btnAddToCart);
    btnAddToCart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            View view;
            TextView tvProductBrand;
            for (int i = 0; i < lv.getCount(); i++){

                view = lv.getChildAt(i);
                if(view != null)
                {
                    tvProductBrand = (TextView) view.findViewById(R.id.tvProductBrand);
                    str_ItemBrand_from_lv = tvProductBrand.getText().toString();

                    Toast.makeText(getApplicationContext(), "lv_item: "+str_ItemBrand_from_lv, Toast.LENGTH_SHORT).show();
                }
            }
        }
    });

我知道这个view = lv.getChildAt(i);仅返回可见视图,如何返回所有子视图?

我的列表视图适配器是lv_custom_adapter(也许我需要使用它,但不确定如何使用)?

2 个答案:

答案 0 :(得分:0)

这是个好主意,请使用 RecyclerView

等级依赖性:

implementation "com.android.support:recyclerview-v7:28.0.0"

https://developer.android.com/guide/topics/ui/layout/recyclerview

将其放入NestedScrollView 设置nestedScrollingEnabled=true

<NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:nestedScrollingEnabled="true"/>

您将一次获得所有孩子

答案 1 :(得分:0)

感谢这篇文章为我们揭开了序幕:Get ListView children that are not in view

我的观点:

view = lv.getAdapter().getView(i, lv.getChildAt(i), lv);