Java RecyclerView不是';t连接到适配器

Java RecyclerView不是';t连接到适配器,java,android,android-studio,android-fragments,android-recyclerview,Java,Android,Android Studio,Android Fragments,Android Recyclerview,我有这个错误。我正在从API下载数据,我想在名为ListFragment的片段中嵌套的RecyclerView中打印它。这个片段是我在ViewPager中使用的三个片段之一查看页面工作正常。现在,我只想显示两个文本视图。它们的布局具有名称单个数据\u布局列表功能是我的数据响应。项目正常构建,没有问题,我在日志中收到“数据已成功下载”。当我在调试模式下运行应用程序时,我会收到一条消息,表明我的RecyclerView未连接到适配器。有什么想法吗 ApiClient: public interfac

我有这个错误。我正在从API下载数据,我想在名为
ListFragment
的片段中嵌套的RecyclerView中打印它。这个片段是我在
ViewPager
中使用的三个片段之一<代码>查看页面工作正常。现在,我只想显示两个文本视图。它们的布局具有名称
单个数据\u布局
<代码>列表功能是我的
数据响应
。项目正常构建,没有问题,我在日志中收到“数据已成功下载”。当我在调试模式下运行应用程序时,我会收到一条消息,表明我的
RecyclerView
未连接到适配器。有什么想法吗

ApiClient:

public interface ApiClient {

    @GET("/query?format=geojson&starttime&minsig=700")
    Call<DataResponse> getData();
}
数据适配器:

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.DataViewHolder> {

    private List<Feature> features;
    private ListFragment listFragment;
    private Context context;
    private LayoutInflater inflater;

    public DataAdapter(List<Feature> features) {

        this.features = features;
    }

    @Override
    public DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        inflater = LayoutInflater.from(context);
        View contractView = inflater.inflate(R.layout.single_data_layout, parent, false);

        return new DataViewHolder(contractView);
    }

    @Override
    public void onBindViewHolder(DataViewHolder holder, int position) {

        holder.place.setText(features.get(position).getProperties().getPlace());
        holder.alert.setText(features.get(position).getProperties().getAlert());
    }

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

    public static class DataViewHolder extends RecyclerView.ViewHolder {

        private final TextView place;
        private final TextView alert;

        public DataViewHolder(View view) {
            super(view);
            place = (TextView) view.findViewById(R.id.place_text_view);
            alert = (TextView) view.findViewById(R.id.alert_text_view);
        }
    }
}
公共类DataAdapter扩展了RecyclerView.Adapter{
私有列表功能;
私有ListFragment ListFragment;
私人语境;
私人充气机;
公共数据适配器(列出功能){
这个。特征=特征;
}
@凌驾
public DataViewHolder onCreateViewHolder(视图组父级,int-viewType){
充气器=充气器。从(上下文);
视图合同视图=充气机。充气(R.layout.single\u data\u layout,parent,false);
返回新的DataViewHolder(contractView);
}
@凌驾
BindViewHolder上的公共无效(DataViewHolder,int位置){
holder.place.setText(features.get(position.getProperties().getPlace());
holder.alert.setText(features.get(position.getProperties().getAlert());
}
@凌驾
public int getItemCount(){
返回features.size();
}
公共静态类DataViewHolder扩展了RecyclerView.ViewHolder{
私人最终文本视图位置;
私人最终文本视图警报;
公共数据视图持有者(视图){
超级(视图);
place=(TextView)view.findViewById(R.id.place\u text\u view);
alert=(TextView)view.findViewById(R.id.alert\u text\u view);
}
}
}
列表片段:

public class ListFragment extends Fragment {

    private RecyclerView recyclerView;
    private static final String TAG = ListFragment.class.getSimpleName();
    private ApiClient apiClient;
    private List<Feature> features;
    private RecyclerView.LayoutManager layoutManager;
    private DataAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_list, container, false);

        recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        getData();

        return view;
    }

    private void getData() {
        apiClient = new ApiClientFactory().createApiClient();

        apiClient.getData().enqueue(new Callback<DataResponse>() {
            @Override
            public void onResponse(Call<DataResponse> call, Response<DataResponse> response) {
                if (response.isSuccessful()) {
                    features = response.body().getFeatures();

                    adapter = new DataAdapter(features);
                    layoutManager = new LinearLayoutManager(getActivity());

                    recyclerView.setAdapter(adapter);
                    recyclerView.setLayoutManager(layoutManager);

                }
                Log.d(TAG, "Data successfully downloaded");
            }

            @Override
            public void onFailure(Call<DataResponse> call, Throwable t) {
                Log.e(TAG, t.toString());
            }
        });
    }
}
公共类ListFragment扩展了片段{
私人回收站;
私有静态最终字符串标记=ListFragment.class.getSimpleName();
私人ApiClient ApiClient;
私有列表功能;
private RecyclerView.LayoutManager LayoutManager;
专用数据适配器;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u列表,容器,false);
recyclerView=(recyclerView)视图.findViewById(R.id.recycler\u视图);
getData();
返回视图;
}
私有void getData(){
apiClient=新建ApiClientFactory().createApiClient();
apiClient.getData().enqueue(新回调()函数){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
features=response.body().getFeatures();
适配器=新数据适配器(功能);
layoutManager=新的LinearLayoutManager(getActivity());
recyclerView.setAdapter(适配器);
recyclerView.setLayoutManager(layoutManager);
}
Log.d(标记“数据成功下载”);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(TAG,t.toString());
}
});
}
}

我看到适配器类没有上下文,我想如果您将上下文c作为第二个参数添加到适配器构造函数中,您的问题就会得到解决

试着重播

 public DataAdapter(List<Feature> features) {

    this.features = features;
}
由此 adapter=newdataadapter(features,getActivity())


希望这将对您有所帮助:)

我看到适配器类没有上下文,我想如果您将上下文c作为第二个参数添加到适配器构造函数中,您的问题将得到解决

试着重播

 public DataAdapter(List<Feature> features) {

    this.features = features;
}
由此 adapter=newdataadapter(features,getActivity())


希望这对您有所帮助:)

您应该更改为布局充气的方式。这应该能奏效

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.DataViewHolder> {

    private List<Feature> features;

    public DataAdapter(List<Feature> features) {
        this.features = features;
    }

    @Override
    public DataAdapter.DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.single_data_layout, parent, false);
        return new DataViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DataViewHolder holder, int position) {

        holder.place.setText(features.get(position).getProperties().getPlace());
        holder.alert.setText(features.get(position).getProperties().getAlert());
    }

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

    public static class DataViewHolder extends RecyclerView.ViewHolder {

        private final TextView place;
        private final TextView alert;

        public DataViewHolder(View view) {
            super(view);
            place = (TextView) view.findViewById(R.id.place_text_view);
            alert = (TextView) view.findViewById(R.id.alert_text_view);
        }
    }
}
公共类DataAdapter扩展了RecyclerView.Adapter{
私有列表功能;
公共数据适配器(列出功能){
这个。特征=特征;
}
@凌驾
public DataAdapter.DataViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(右布局、单数据布局、父级、假);
返回新的DataViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(DataViewHolder,int位置){
holder.place.setText(features.get(position.getProperties().getPlace());
holder.alert.setText(features.get(position.getProperties().getAlert());
}
@凌驾
public int getItemCount(){
返回features.size();
}
公共静态类DataViewHolder扩展了RecyclerView.ViewHolder{
私人最终文本视图位置;
私人最终文本视图警报;
公共数据视图持有者(视图){
超级(视图);
place=(TextView)view.findViewById(R.id.place\u text\u view);
alert=(TextView)view.findViewById(R.id.alert\u text\u view);
}
}
}

您应该更改充气布局的方式。这应该能奏效

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.DataViewHolder> {

    private List<Feature> features;

    public DataAdapter(List<Feature> features) {
        this.features = features;
    }

    @Override
    public DataAdapter.DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.single_data_layout, parent, false);
        return new DataViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DataViewHolder holder, int position) {

        holder.place.setText(features.get(position).getProperties().getPlace());
        holder.alert.setText(features.get(position).getProperties().getAlert());
    }

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

    public static class DataViewHolder extends RecyclerView.ViewHolder {

        private final TextView place;
        private final TextView alert;

        public DataViewHolder(View view) {
            super(view);
            place = (TextView) view.findViewById(R.id.place_text_view);
            alert = (TextView) view.findViewById(R.id.alert_text_view);
        }
    }
}
公共类DataAdapter扩展了RecyclerView.Adapter{
私有列表功能;
公共数据适配器(列出功能){
这个。特征=特征;
}
@凌驾
public DataAdapter.DataViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(右布局、单数据布局、父级、假);
返回新的DataViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(DataViewHolder,int位置)
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.DataViewHolder> {

    private List<Feature> features;

    public DataAdapter(List<Feature> features) {
        this.features = features;
    }

    @Override
    public DataAdapter.DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.single_data_layout, parent, false);
        return new DataViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DataViewHolder holder, int position) {

        holder.place.setText(features.get(position).getProperties().getPlace());
        holder.alert.setText(features.get(position).getProperties().getAlert());
    }

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

    public static class DataViewHolder extends RecyclerView.ViewHolder {

        private final TextView place;
        private final TextView alert;

        public DataViewHolder(View view) {
            super(view);
            place = (TextView) view.findViewById(R.id.place_text_view);
            alert = (TextView) view.findViewById(R.id.alert_text_view);
        }
    }
}