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