Java RecyclerView不是';t连接到适配器
我有这个错误。我正在从API下载数据,我想在名为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
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);
}
}
}