Я следую учебному пособию по разработке Android (создание приложения для погоды), но я застрял в ошибке, которую я получаю. Я включил полный журнал журнала в конце вопроса. Кто-нибудь знает, почему я получаю эту ошибку? Я проверил все более 10 раз. NODE: версия minSDK - 14, и именно поэтому я использую библиотеку поддержки, чтобы использовать представление Recycler.Nullpointer Исключение при использовании RecyclerView
Это расположение XML-файл активности, который использует представление ресайклер:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="@drawable/bg_gradient"
tools:context="koemdzhiev.com.stormy.ui.HourlyForecastActivity">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"/>
Это мой код Recycler.Adapter:
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 mSummaryLabel;
public TextView mTemperatureLabel;
public ImageView mIconImageView;
public HourViewHolder(View itemView) {
super(itemView);
mTimeLabel = (TextView) itemView.findViewById(R.id.timeLabel);
mSummaryLabel = (TextView) itemView.findViewById(R.id.summaryLabel);
mTemperatureLabel= (TextView) itemView.findViewById(R.id.temperatureLabel);
mIconImageView = (ImageView) itemView.findViewById(R.id.iconImageView);
}
public void bindHour(Hour hour){
mTimeLabel.setText(hour.getHour());
mSummaryLabel.setText(hour.getSummary());
mTemperatureLabel.setText(hour.getTemperature() + "");
mIconImageView.setImageResource(hour.getIconId());
}
}
}
и это является кодом в своей деятельности:
public class HourlyForecastActivity extends Activity {
private Hour[] mHours;
//inject the RecyclerView as member variable
@InjectView(R.id.recyclerView) RecyclerView mRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hourly_forecast);
ButterKnife.inject(this);
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);
//if dealing with fixed size data, it is recommended to do the following...
mRecyclerView.setHasFixedSize(true);
}
}
И это LogCat журналы, которые я получаю:
05-22 22:56:00.394 32579-32579/koemdzhiev.com.stormy E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: koemdzhiev.com.stormy, PID: 32579
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
at koemdzhiev.com.stormy.adapters.HourAdapter$HourViewHolder.bindHour(HourAdapter.java:61)
at koemdzhiev.com.stormy.adapters.HourAdapter.onBindViewHolder(HourAdapter.java:33)
at koemdzhiev.com.stormy.adapters.HourAdapter.onBindViewHolder(HourAdapter.java:16)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:4805)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4106)
Вы можете показать файл R.layout.hourly_list_item? Ошибка показывает, что mIconImageView имеет значение null, когда вы вызываете mIconImageView.setImageResource (hour.getIconId()); – GuilhE
Я включил код этого файла в качестве ответа ниже. Чем вы за ответ так быстро! :) –
О, черт! Я нашел проблему! Существует опечатка, которую я не видел! В id IconImageView его IconImaveView с «v». О, мой ... Спасибо, что указал на меня в этом направлении! –