gpt4 book ai didi

java - RecyclerView 空指针异常

转载 作者:太空狗 更新时间:2023-10-29 15:51:10 26 4
gpt4 key购买 nike

我是 Android Studio 的新手,发现了类似的问题,但没有一个回复适用于我当前的实例。我一直在尝试使用 RecyclerViews,但每当我用它打开一个 Activity 时,都会收到以下错误消息。代码未显示任何错误。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lucasrizzotto.edgeweather/com.lucasrizzotto.edgeweather.ui.HourlyForecastActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference

这是我的适配器:

public class HourAdapter extends RecyclerView.Adapter<HourAdapter.HourViewHolder> {

private Hour[] mHours;

public HourAdapter(Hour[] hours) {
mHours = hours;
}

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

@Override
public void onBindViewHolder(HourViewHolder holder, int position) {
holder.bindHour(mHours[position]);
}

@Override
public int getItemCount() {
return mHours.length;
}

public class HourViewHolder extends RecyclerView.ViewHolder {

public TextView mTimeLabel;
public TextView mTemperatureLabel;
public TextView mSummaryLabel;
public ImageView mIconImageView;

public HourViewHolder(View itemView) {
super(itemView);
mTimeLabel = (TextView) itemView.findViewById(R.id.timeLabel);
mTemperatureLabel = (TextView) itemView.findViewById(R.id.temperatureLabel);
mSummaryLabel = (TextView) itemView.findViewById(R.id.summaryLabel);
mIconImageView = (ImageView) itemView.findViewById(R.id.iconImageView);
}

public void bindHour(Hour hour) {
mTimeLabel.setText(hour.getHour());
mSummaryLabel.setText(hour.getSummary());
mTemperatureLabel.setText((int)hour.getTemperature());
mIconImageView.setImageResource(hour.getIconId());
}

}
}

还有我的 Activity 类(请记住,我正在使用 ButterKnife 插件来避免样板代码)

public class HourlyForecastActivity extends AppCompatActivity {

private Hour[] mHours;

@BindView(R.id.recyclerView) RecyclerView mRecyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hourly_forecast);

Intent intent = getIntent();
Parcelable[] parcelables = intent.getParcelableArrayExtra(MainActivity.HOURLY_FORECAST);
mHours = Arrays.copyOf(parcelables, parcelables.length, Hour[].class);

HourAdapter adapter = new HourAdapter(mHours);
mRecyclerView.setAdapter(adapter);

RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setHasFixedSize(true);

}
}

我忽略了什么?

提前感谢您的智慧!

最佳答案

尝试调用:

ButterKnife.bind(this);

设置内容 View 后

由于您不是以常规方式执行此操作,因此您需要实际调用 bind()。

关于java - RecyclerView 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38645323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com