ViewHolder views must not be attached when created. Ensure that you are not passing 'true' to the at

@[TOC](ViewHolder views must not be attached when created. Ensure that you are not passing ‘true’ to the attachToRoot parameter of LayoutInflater.inflate(…, boolean attachToRoot))

ViewPager + Fragment + RecyclerView addViewHolder切换的时候闪退

思路:为什么第一次加载就没问题,第二次就不行,我还专门看看两次生命周期的路程,显然两次都是一样的,那到底哪里不一样呢,全局变量!!!第一次加载是首次定义,第二次不是再次定义,虽然页面被销毁但是全局变量并没有被回收,我这里有两个办法亲测有效。

1.在页面被销毁的时候设置全局变量为空

 @Override
    public void onStop() {
        super.onStop();
        Log.e("onStop","执行");
        MyHotRecyclerView = null;	//设置RecyclerView控件为null
        pickBabyAdapter2 = null;	//设置适配器为null
        view_top = null;	//设置头部View为null
    }

2.设置ViewPager预加载全部子页面

  • 这个办法就是不让这个页面销毁,但是当Viewpager里页面很多的时候会加载很慢,性能很差,这里不推荐使用

      mViewPager.setOffscreenPageLimit(fragments.size);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误是因为 SimpleAdapter 无法将 TextureView 视为视图来绑定。解决方案是使用自定义适配器(Custom Adapter),并在适配器的 getView() 方法中手动绑定 TextureView。以下是示例代码: ```java public class CustomAdapter extends BaseAdapter { private Context mContext; private List<MyData> mDataList; public CustomAdapter(Context context, List<MyData> dataList) { mContext = context; mDataList = dataList; } @Override public int getCount() { return mDataList.size(); } @Override public Object getItem(int position) { return mDataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; ViewHolder holder; if (view == null) { view = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.textureView = (TextureView) view.findViewById(R.id.texture_view); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } // Bind TextureView here MyData data = mDataList.get(position); holder.textureView.setSurfaceTexture(data.getSurfaceTexture()); return view; } private static class ViewHolder { TextureView textureView; } } ``` 在这个示例中,我们创建了一个自定义适配器 CustomAdapter,其中包含一个名为 ViewHolder 的内部类,用于保存视图的引用。在 getView() 方法中,我们手动绑定 TextureView,然后返回视图。 使用自定义适配器后,可以像这样设置列表视图: ```java List<MyData> dataList = getDataList(); CustomAdapter adapter = new CustomAdapter(this, dataList); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); ``` 其中,getDataList() 方法根据您的需要返回数据列表。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值