Android RecyclerView内存问题

Android RecyclerView内存问题,android,android-recyclerview,Android,Android Recyclerview,只需从ListView更改为RecyclerView。但是,面对记忆问题 请尝试下载此源代码。启动应用程序并检查网格视图的演示一。打开内存监视器并上下滚动几次。会看到记忆逐渐增长 有人知道为什么吗 编辑: 回收器适配器 public class DemoAdapter extends RecyclerView.Adapter<DemoViewHolder> { private ArrayList<String> mArrayList; public DemoAdap

只需从ListView更改为RecyclerView。但是,面对记忆问题

请尝试下载此源代码。启动应用程序并检查网格视图的演示一。打开内存监视器并上下滚动几次。会看到记忆逐渐增长

有人知道为什么吗

编辑:

回收器适配器

public class DemoAdapter extends RecyclerView.Adapter<DemoViewHolder> {

private ArrayList<String> mArrayList;

public DemoAdapter() {
    mArrayList = new ArrayList<>();
}

@Override
public DemoViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    View view = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.viewholder_demo, viewGroup, false);
    DemoViewHolder demoViewHolder = new DemoViewHolder(view);
    return demoViewHolder;
}

@Override
public void onBindViewHolder(DemoViewHolder demoViewHolder, int i) {
    demoViewHolder.setTitle(i + "");
}

@Override
public int getItemCount() {
    return mArrayList.size();
}

@Override
public int getItemViewType(int position) {
    return 0;
}

public void setArrayList(ArrayList<String> arrayList) {

    if (arrayList == null || arrayList.isEmpty()) {
        throw new IllegalArgumentException("youShouldNotSetEmptyArrayList");
    }

    mArrayList.addAll(arrayList);
}
}
公共类DemoAdapter扩展了RecyclerView.Adapter{ 私人ArrayList结婚名单; 公共数据适配器(){ mArrayList=newarraylist(); } @凌驾 public DemoViewHolder onCreateViewHolder(视图组视图组,int i){ View=LayoutFlater.from(viewGroup.getContext()) .充气(R.layout.viewholder\u演示,视图组,错误); DemoViewHolder DemoViewHolder=新的DemoViewHolder(视图); 返回视窗持有人; } @凌驾 BindViewHolder上的公共无效(DemoViewHolder DemoViewHolder,int i){ demoViewHolder.setTitle(i+“”); } @凌驾 public int getItemCount(){ 返回mArrayList.size(); } @凌驾 public int getItemViewType(int位置){ 返回0; } 公共无效setArrayList(ArrayList ArrayList){ if(arrayList==null | | arrayList.isEmpty()){ 抛出新的IllegalArgumentException(“您不应该设置EmptyArrayList”); } mArrayList.addAll(arrayList); } } viewholder_demo.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">

<!--<Space-->
    <!--android:layout_width="50dp"-->
    <!--android:layout_height="50dp" />-->
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Large Text"
    android:id="@+id/textView2"/>

碎片

public abstract class RecyclerFragment<T extends RecyclerView.Adapter<?>> extends Fragment {

protected RecyclerView mRecyclerView;
protected T mAdapter;
protected RecyclerView.LayoutManager mLayoutManager;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mAdapter = mRecyclerModel.provideAdapter();

}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(getLayoutResourcesId(), container, false);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);

    mLayoutManager = new GridLayoutManager(context, 3, GridLayoutManager.VERTICAL, false);
    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setAdapter(mAdapter);
    return view;
}

protected int getLayoutResourcesId() {
    return R.layout.fragment_vertical_recycler;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    mRecyclerView.setAdapter(null);
    mRecyclerView = null;
}


public T getAdapter() {
    return mAdapter;
}

public abstract class recyclerfragment请指向代码的特定部分,不要发布整个项目,告诉我们下载并运行它。只需添加一些代码我也尝试一下这一个,非常有趣,它将oom,而只是上下滚动请指向您的代码的特定部分,不要只是发布您的整个项目,并告诉我们下载并运行它我的坏。只需添加一些代码,我也可以尝试一下这个,非常有趣的是,它会在上下滚动时发出oom声