RecyclerView:未连接适配器;在适配器中创建充气机时跳过布局应用程序关闭

问题描述 投票:0回答:2

[尝试创建RecyclerView并在片段中使用Retrofit2填充数据但是当我运行应用程序并转到该片段时,它会关闭,

当我调试App在适配器的onCreateViewHolder]的以下行中关闭时

LayoutInflater inflater = LayoutInflater.from( context );

出现以下错误

RecyclerView: No adapter attached; skipping layout
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference

以下是片段的代码

ApiConfig apiConfig = AppConfig.getRetrofit().create(ApiConfig.class);
            Call<List<TCImages>> call = apiConfig.getImages();
            call.enqueue( new Callback<List<TCImages>>() {
                @Override
                public void onResponse(Call<List<TCImages>> call, Response<List<TCImages>> response) {
                    tcImages = response.body();

                    recyclerView = (RecyclerView) getView().findViewById( R.id.recyclerView );
                    manager = new LinearLayout( getContext() );
                    tcAdapter = new TCAdapter( tcImages, getActivity() );
                    recyclerView.setAdapter( tcAdapter );
                    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                }

                @Override
                public void onFailure(Call<List<TCImages>> call, Throwable t) {

                }
            } );

下面是我的适配器的代码

package com.example.tc;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.tc.networking.TCImages;

import java.util.List;

import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;


public class TCAdapter extends RecyclerView.Adapter<TCAdapter.MyViewHolder> {

    List<TCImages> tcImages;
    Context context;

    public TCAdapter(List<TCImages> tcImages, FragmentActivity activity){
        this.tcImages = tcImages;
    }

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

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.textView.setText( tcImages.get( position ).getEmail() );

    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        public MyViewHolder(@NonNull View itemView) {
            super( itemView );
            textView = (TextView) itemView.findViewById( R.id.txtItem );
        }
    }
}

我正在学习阶段,正在获取活动代码,并在Fragment中对其进行转换。

[尝试创建RecyclerView并在片段中使用Retrofit2填充数据,但是当我运行应用程序并转到该片段时,它关闭了,当我调试应用程序在适配器的以下几行中关闭时...

android android-recyclerview retrofit android-adapter recycler-adapter
2个回答
0
投票
从父级获取上下文。

0
投票
您是否曾经设置过Context context;的值吗?
© www.soinside.com 2019 - 2024. All rights reserved.