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

E/RecyclerView:未附加适配器;跳过布局。尽管正在初始化适配器

贡英华
2023-03-14

按照本指南,我尝试将recycleview实现为片段。我得到错误e/recyclerView:没有附加适配器;跳过布局回收视图不显示任何内容

我已尝试
RecycleView未附加适配器;跳过布局
片段中的RecyclerView:没有连接适配器,跳过布局
和更多。

我的代码:

package com.example.celebrity_proper;


import android.content.Context;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;


/**
 * A simple {@link Fragment} subclass.
 */
public class MainFragment extends Fragment {

    private RecyclerView choiceRecycleView2 = null;
    private ChoiceAdapter adapter = null;
    private ArrayList<Choice> choiceArrayList;

    public MainFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.d("Go here", "41");
        View view =  inflater.inflate(R.layout.fragment_main, container, false);

        choiceRecycleView2 = view.findViewById(R.id.choiceRecycleView);
        choiceRecycleView2.setLayoutManager(new LinearLayoutManager(getActivity()));
        choiceArrayList = new ArrayList<>();
        adapter = new ChoiceAdapter(getActivity(), choiceArrayList);
        choiceRecycleView2.setAdapter(adapter);
        createListData();

        return view;
    }


    public void createListData() {
        Choice choice = new Choice("Adolf Hitler");
        choiceArrayList.add(choice);
        choice = new Choice("Kim Jong Un");
        Log.d("Item Count", String.valueOf(adapter.getItemCount()));
        choiceArrayList.add(choice);
        adapter.notifyDataSetChanged();
    }

}

class Choice {
    private String name;

    public Choice(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}

class ChoiceAdapter extends RecyclerView.Adapter<ChoiceViewHolder> {

    private Context context;

    private ArrayList<Choice> choices;
    public ChoiceAdapter(Context context, ArrayList<Choice> choices) {
        this.context = context;
        this.choices = choices;
    }

    @NonNull
    @Override
    public ChoiceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.choice_row, parent, false);
        return new ChoiceViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ChoiceViewHolder holder, int position) {
        Choice choice = choices.get(position);
        holder.setDetails(choice);
    }

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

class ChoiceViewHolder extends RecyclerView.ViewHolder {
    private TextView choice_row_text;

    public ChoiceViewHolder(View view) {
        super(view);

        choice_row_text = view.findViewById(R.id.choice_row_text);
    }

    public void setDetails(Choice choice) {
        choice_row_text.setText(choice.getName());
    }
}

共有1个答案

柯昆杰
2023-03-14

您正在向适配器构造函数发送空列表。正确的方式


        choiceRecycleView2 = view.findViewById(R.id.choiceRecycleView);
        choiceRecycleView2.setLayoutManager(new LinearLayoutManager(getActivity()));
        choiceArrayList = new ArrayList<>();

        createListData();

        adapter = new ChoiceAdapter(getActivity(), choiceArrayList);
        choiceRecycleView2.setAdapter(adapter);
        adapter.notifyDataSetChanged();


    public void createListData() {
        Choice choice = new Choice("Adolf Hitler");
        choiceArrayList.add(choice);
        choice = new Choice("Kim Jong Un");
        Log.d("Item Count", String.valueOf(adapter.getItemCount()));
        choiceArrayList.add(choice);
    }



 类似资料:
  • 我一直在stackoverflow和这篇博文上阅读不同的答案,并试图实现它们的解决方案,但我仍然得到错误: 片段中的布局: 和项目的布局: 我做错了什么? 编辑:以下是适配器:

  • 我需要帮助,我有一个错误,那就是这个:E/recyclerView:没有连接适配器;跳过布局 代码: 公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View View=inflater.inflate(r.layout.fragment_chats,container,

  • 我正在使用一个片段来查看一个RecyclerView。但我总是犯这个错误 E/RecyclerView:未附加适配器;跳过布局 我已经为我的recyclerview创建了一个适配器,但布局没有显示。php后端运行良好。谁能帮帮我。下面是我的片段和适配器代码 Tips.java TipAdapter.java

  • 我已经提到了相当少的帖子关于这个错误,但没有一个能够解决我的问题。我有一个片断,在这里我使用修改获得了我的值,我已经在下面显示了: 下面是我的RecyclerView适配器类:

  • 当应用程序启动时,我得到一个空白屏幕,当我检查日志时,我得到:E/回收人员视图:没有连接适配器;跳过布局错误 我不知道为什么?任何想法,它似乎没有附加回收器视图或添加任何数据,我附加了Main活动、DataAdapter和数据类。 主要活动 数据适配器 下面是我的数据类,将从中提取数据 我ncluded.java 收集器和设置器 这是jsonResponse类,在接口中引用 感谢任何帮助。

  • 我已经创建了一个片段,在该片段中有一个recycle view,但是当我的片段被加载时,什么也没有显示,它给出了这个错误“E/recycle view:没有连接适配器;跳过布局”。下面是适配器和片段类的代码,任何帮助都将不胜感激 适配器类: 片段类: fragment _ view _ all _ my _ recipes . XML view_all_recipe_item.xml