当前位置: 首页 > 知识库问答 >
问题:

未连接适配器;跳过布局回收视图

金亦
2023-03-14

图像不显示。在一个SO例子中说要检查适配器中的计数,但我认为它是正确的。我在logcat中得到这个错误

No adapter attached; skipping layout recyclerview

这是代码主活动

RecyclerOkHttpHandler handler = new RecyclerOkHttpHandler( this, new RecyclerOkHttpHandler.MyInterface() {
        @Override
        public void myMethod(ArrayList result) {
            mAdapter = new MyAdapter(result,Search.this);
            mAdapter.notifyDataSetChanged();
            mRecyclerView.setAdapter(mAdapter);

这是我的适配器。

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private ArrayList<Listitem> mDataset;
    Context mContext;
    public class ImageViewHolder extends RecyclerView.ViewHolder {
        //ImageView mImage;
        public TextView txtHeader;
        public TextView txtFooter;
        public ImageView image;
        public ImageViewHolder(View itemView) {
            super (itemView);
            txtHeader = (TextView) itemView.findViewById(R.id.firstLine);
            txtFooter = (TextView) itemView.findViewById(R.id.secondLine);
             image = (ImageView) itemView.findViewById(R.id.icon);
        }
    }


    public void add(int position, Listitem item) { //changed from string to listitem

        mDataset.add(position, item);
        notifyItemInserted(position);
    }

    public void remove(String item) {
        int position = mDataset.indexOf(item);
        mDataset.remove(position);
        notifyItemRemoved(position);
    }

    // Provide a suitable constructor (depends on the kind of dataset)
    public MyAdapter(ArrayList<Listitem> myDataset, Context context) {

        mDataset = myDataset;
        mContext = context;

    }

    // Create new views (invoked by the layout manager)
    @Override
    public RecyclerView.ViewHolder  onCreateViewHolder(ViewGroup parent,
                                                       int viewType) {

            // create a new view
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout, parent, false);
            // set the view's size, margins, paddings and layout parameters
            ImageViewHolder vh = new ImageViewHolder(v);
            return vh;
        }


    private static final int TYPE_IMAGE = 1;
    private static final int TYPE_GROUP = 2;

    @Override
    public int getItemViewType(int position) {
        // here your custom logic to choose the view type
        return position;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder TextViewHolder, int position) {

                ImageViewHolder viewHolder = (ImageViewHolder) TextViewHolder;
                //  viewHolder.txtHeader.setText(...)
        final Listitem item;

      //  final String name = mDataset.get(position);
        item = mDataset.get(position);
      //  viewHolder.txtHeader.setText(mDataset.get(position));
        viewHolder.txtHeader.setText(mDataset.get(position).getUrl());


        Picasso.with(mContext)
                .load(item.getUrl())
                .placeholder(R.drawable.logo)
                .fit()
                .noFade()
                .into(viewHolder.image);

              /*  viewHolder.txtFooter.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        remove(item);
                    }
                });*/

               // viewHolder.txtFooter.setText("Footer: " + mDataset.get(position));

        }


    // Return the size of your dataset (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return mDataset.size();
    }

}

共有2个答案

长孙弘盛
2023-03-14

请先删除 mAdapter.notifyDataSet已更改() 然后按照以下代码行设置适配器。一旦适配器设置为回收器视图,您就可以执行此操作。

  @Override
        public void myMethod(ArrayList result) {
            mAdapter = new MyAdapter(result,Search.this);
            mAdapter.notifyDataSetChanged();
            mRecyclerView.setAdapter(mAdapter);
司寇苗宣
2023-03-14

尝试调试代码并检查是否执行了myMethod()方法。

此外,创建适配器时无需调用novfyDataSetChanged()

public void myMethod(ArrayList result) {
       mAdapter = new MyAdapter(result,Search.this);
       mRecyclerView.setAdapter(mAdapter);
}
 类似资料:
  • 我收到以下错误:“RecyclerView:未连接适配器;跳过布局”,但我已连接适配器...我尝试了许多不同的方法,但我无法解决错误。 我正在使用Volley库获取数据。当我启动活动时,只有进度条可见,直到结束,我收到上面的Logcat消息。我在中添加了带有适配器的。你能帮我吗? 这是我的代码: 主活动 地震适配器 MainActivity.xml 地震法。xml

  • 它给了我“回收站视图:没有连接适配器;跳过布局“错误,但在我看来适配器已正确连接。请帮忙。 我正在移动我的方法,但它不起作用。我在这里寻找答案,但只有错误实现的适配器存在问题。我不知道这里出了什么问题。

  • 我根据类似问题的答案修改了代码,但没有一个有效。我正在使用TabFragments和RecyclerViews。控制台显示错误“E/RecyclerView:No adapter attached;kipping layout”四次。 (当修改它也给了我错误java.lang.NullPointerException:试图调用虚方法'voidandroid.support.v7.widget.Re

  • 我一直收到错误“RecycleView:未附加适配器;跳过布局”当显示RecyclView列表时。我有3个选项卡,其中一个选项卡有一个从SQLite数据库填充的RecyclView列表。我没有收到任何崩溃,数据在视图中显示正确,但我仍然收到这个错误。 我以为这只是一个警告,因为数据正确到位,但当我尝试onClick时,它不起作用,我确信它与此错误有关。 我知道这个问题以前被问过很多次,但我检查了大

  • 我制作了一个基本的购物清单应用程序,它利用回收器视图来显示列表项目。我正在尝试使用带有片段的导航添加设置屏幕。我遇到了我的回收器视图的问题 主活动.kt HomeFragment.kt 设置Fragment.kt activity_main.xml fragment\u home.xml navigation.xml 不确定是否需要更多信息。提前道歉-我是android studio的新手

  • 我有“E/RecyclerView:没有连接适配器;跳过布局”错误消息。我在片段中有recycleView,所以我一定是在fragment1.java上做错了什么。 这是代码。如您所见,我在代码上设置了适配器,但我收到此错误。任何帮助将不胜感激。谢谢。 公共类Fragment1扩展片段{ } 公共类圣经适配器扩展回收器View.Adapter { }