Я создаю список повторного просмотра изображений с текстом и не могу понять, почему я получаю нулевой указатель ... код выглядит следующим образом:
MainActivity.Java
package com.mdadi.animals2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.EditText;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView list; //RecyclerView instance
private RecyclerView.Adapter mAdapter; //Adapter
private RecyclerView.LayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_recycler_view);
ArrayList<ListData> listData = initData();
final EditText editText = findViewById(R.id.editTxt);
list = findViewById(R.id.recyclerView);
list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
list.setLayoutManager(layoutManager);
mAdapter = new MyAdapter(listData);
list.setAdapter(mAdapter);
/* findViewById(R.id.delBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newFact = editText.getText().toString();
mAdapter.notifyItemInserted(list.size() - 1);
}
});*/
}
private ArrayList<ListData> initData() {
ArrayList<ListData> list = new ArrayList<>();
list.add(new ListData("bird\n",R.drawable.bird)); //1
list.add(new ListData("cat\n",R.drawable.cat)); //2
list.add(new ListData("dog\n",R.drawable.dog)); //3
list.add(new ListData("fish\n",R.drawable.fish)); //4
list.add(new ListData("kangaroo\n",R.drawable.kangaroo)); //5
list.add(new ListData("monkey\n",R.drawable.monkey)); //6
list.add(new ListData("turtle\n",R.drawable.turtle)); //7
list.add(new ListData("horse\n",R.drawable.horse)); //8
list.add(new ListData("elephant\n",R.drawable.elephant)); //9
list.add(new ListData("turkey\n",R.drawable.turkey)); //10
return list;
}
}
MyAdapter.Java
package com.mdadi.animals2;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private ArrayList<ListData> data;
public MyAdapter(ArrayList<ListData> data) {
this.data = data;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View rootView = LayoutInflater.from(parent.getContext()).inflate
(R.layout.recycler_view_item, parent, false);
return new MyViewHolder(rootView);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
ListData listData = data.get(position);
//String message = data.get(position).getDesc();
//holder.textView.setText(message);
holder.textView.setText(listData.getDesc());
holder.img.setImageResource(listData.getImgURL());
}
@Override
public int getItemCount() {
if (data != null)
return data.size();
else
return 0;
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
private ImageView img;
private View view;
public MyViewHolder(View view) {
super(view);
this.view = view;
textView = view.findViewById(R.id.fact);
img = view.findViewById(R.id.image);
}
public TextView getTextView() {
return textView;
}
}
}
ListData.Java
package com.mdadi.animals2;
public class ListData {
private String desc;
private int imgURL;
public ListData(String desc, int imgURL) {
this.desc = desc;
this.imgURL = imgURL;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
public int getImgURL() {
return imgURL;
}
}
my_recycler_view.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/editTxt"
android:layout_alignParentTop="true"
android:id="@+id/recyclerView"
android:scrollbars="vertical"
tools:listitem="@layout/recycler_view_item" />
<EditText
android:id="@+id/editTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toStartOf="@+id/btnAdd"
android:layout_alignTop="@+id/btnAdd"/>
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:text="@string/add_fact_button" />
</RelativeLayout>
И, наконец, исключение: Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.support.v7.widget.RecyclerView.setHasFixedSize (boolean)» для ссылки на пустой объект в com.mdadi.animals2.MainActivity.onCreate (MainActivity.java): 28)
Любая помощь приветствуется, спасибо!