Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态加载和清除LinearLayout的内容_Android_Android Layout_Android Linearlayout - Fatal编程技术网

Android 动态加载和清除LinearLayout的内容

Android 动态加载和清除LinearLayout的内容,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我有以下场景:我有一个LinearLayout,然后在其上添加“cards”,这是一个扩展LinearLayout的自定义类 问题是每张卡都包含一个图像。现在,如果我有太多的卡显示,我会得到一个内存不足的错误,因为图像的大小 如何动态查看屏幕上当前显示的卡,并仅加载这些卡的图像,而将其余的保持为空 我正在努力检测屏幕上当前显示的是哪张卡,哪些不是。然后在用户滚动列表时加载事件并清除图像 对于类似的内容,您可能应该使用Recycler视图。通过这种方式,您可以循环使用视图,理想情况下不会遇到内存问

我有以下场景:我有一个LinearLayout,然后在其上添加“cards”,这是一个扩展LinearLayout的自定义类

问题是每张卡都包含一个图像。现在,如果我有太多的卡显示,我会得到一个内存不足的错误,因为图像的大小

如何动态查看屏幕上当前显示的卡,并仅加载这些卡的图像,而将其余的保持为空


我正在努力检测屏幕上当前显示的是哪张卡,哪些不是。然后在用户滚动列表时加载事件并清除图像

对于类似的内容,您可能应该使用Recycler视图。通过这种方式,您可以循环使用视图,理想情况下不会遇到内存问题,也不必使用黑客解决方案来检查屏幕上显示的内容和未显示的内容。

您必须实现一个RecyclerView,它为您完成这项工作

    RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);

    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    final Adapter adapter = new Adapter();

    recyclerView.setAdapter(adapter);
适配器:

private class Adapter extends RecyclerView.Adapter<MyViewHolder> {

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_main, viewGroup, false);

        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder myViewHolder, int i) 
        // set the content of the card
    }

    @Override
    public int getItemCount() {
        return // number of cards
    }

}
布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:design="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivityFragment">

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recycler_view"
    />

</RelativeLayout>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:design="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivityFragment">

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recycler_view"
    />

</RelativeLayout>