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

片段,RecyclerView:未附加适配器;跳过布局

刘海
2023-03-14

我正在使用一个片段来查看一个RecyclerView。但我总是犯这个错误

E/RecyclerView:未附加适配器;跳过布局

我已经为我的recyclerview创建了一个适配器,但布局没有显示。php后端运行良好。谁能帮帮我。下面是我的片段和适配器代码

Tips.java

public class Tips extends Fragment {

Configuration config = new Configuration();
String HttpUrl = config.viewtips_url;
List<TipModel> tipList;
RecyclerView recyclerView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_tips, container, false);
    recyclerView = view.findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    tipList = new ArrayList<>();
    loadTips();
    return view;
}

private void loadTips() {
    StringRequest stringRequest = new StringRequest(Request.Method.GET, HttpUrl,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONArray jsonArray = new JSONArray(response);
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject = jsonArray.getJSONObject(i);
                            tipList.add(new TipModel(
                                    jsonObject.getInt("id"),
                            jsonObject.getString("tip")

                            ));
                        }
                        TipAdapter tipAdapter = new TipAdapter(getActivity(), tipList);
                        recyclerView.setAdapter(tipAdapter);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
    Volley.newRequestQueue(getActivity()).add(stringRequest);
}

TipAdapter.java

public class TipAdapter extends RecyclerView.Adapter<TipAdapter.TipViewHolder> {

private Context context;
private List<TipModel> tipList;

public TipAdapter(Context context, List<TipModel> tipList) {
    this.context = context;
    this.tipList = tipList;
}

@Override
public TipViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View view = inflater.inflate(R.layout.itemlayout, null);
    return new TipViewHolder(view);
}

@Override
public void onBindViewHolder(TipViewHolder holder, int position) {
    TipModel tipModel = tipList.get(position);


    holder.textViewTip.setText(tipModel.getTip());

}

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

class TipViewHolder extends RecyclerView.ViewHolder {
    TextView textViewTip;

    public TipViewHolder(View view) {
        super(view);
        textViewTip = view.findViewById(R.id.textViewTip);
    }
}

共有1个答案

郦祺
2023-03-14

发生这种情况是因为recyclerView在为创建的视图分派布局时期望有一个适配器,所以如果在创建视图时没有适配器也没关系,它将跳过布局部分。

如果您担心错误,那么您可以在创建视图时设置一个空适配器:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_tips, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    recyclerView = view.findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    tipList = new ArrayList<>();
    recyclerView.setAdapter(new TipAdapter(getActivity(), tipList));
}

然后在响应回调中调整代码:

@Override
public void onResponse(String response) {

    // Instead of setting adapter here...
    // TipAdapter tipAdapter = new TipAdapter(getActivity(), tipList);
    // recyclerView.setAdapter(tipAdapter);

    // Just notify the adapter that tipList has changed.
    recyclerView.getAdapter().notifyDataSetChanged();

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

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

  • 我收到以下错误:“RecyclerView:未附加适配器;跳过布局”但我已附加适配器...我试过很多不同的方法,但都解决不了这个错误。 我正在使用Volley库获取数据。当我启动activity时,直到结束只有进度条可见,并且收到上面的Logcat消息。我已经在中添加了带有适配器的。你能帮帮我吗? 下面是我的代码: 主要活动 地震适配器 mainactivity.xml EquestakerAw.

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

  • 我有一个回收演示,但当我运行该演示时,总是显示错误消息“recycleview recycerview:No adapter attached;skipping layout” 这是我主要的activity课 这是我的RecyclerViewAdapter代码

  • 我的应用程序正在正确地从parse.com获取信息,但没有像以前那样在recyclerview中正确地显示信息。系统提示我错误消息“no adapter attached;skipping layout”,并且recyclerview仍然为空。请你检查一下我的程序并通知我任何我可能错过的错误好吗? $ $