Пытаюсь подгружать CardView в один из фрагментов. Но при открытии фрагмента приложение вылетает. В чем может быть проблема?
В логе ошибка:
NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.example.gukov.guap.DirectionAdapter.getItemCount(DirectionAdapter.java:45)
Код адаптера DirectionAdapter: `public class DirectionAdapter extends RecyclerView.Adapter {
private Context mCtx;
private List<Direction> directionList;
public DirectionAdapter(Context mCtx, List<Direction> DirectionList) {
this.mCtx = mCtx;
this.directionList = directionList;
}
@Override
public DirectionViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.direction, null);
return new DirectionViewHolder(view);
}
@Override
public void onBindViewHolder(DirectionViewHolder holder, int position) {
Direction direction = directionList.get(position);
holder.textViewDirectionTitle.setText(direction.getDirectionTitle());
holder.textViewDirectionCount.setText(direction.getDirectionCount());
}
@Override
public int getItemCount() {
return directionList.size();
}
class DirectionViewHolder extends RecyclerView.ViewHolder {
TextView textViewDirectionTitle, textViewDirectionCount;
public DirectionViewHolder(View itemView) {
super(itemView);
textViewDirectionTitle = itemView.findViewById(R.id.textViewDirectionTitle);
textViewDirectionCount = itemView.findViewById(R.id.textViewDirectionCount);
}
}}`
Код фрагмента SearchFragment: `public class SearchFragment extends Fragment {
RecyclerView recyclerView;
DirectionAdapter adapter;
List<Direction> directionList;
public SearchFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_search, container, false);
FloatingActionButton button = (FloatingActionButton) rootView.findViewById(R.id.floatingActionButton2);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getActivity().getApplication().getApplicationContext(), AddMeetActivity.class);
startActivity(intent);
}
});
directionList = new ArrayList<>();
recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplication().getApplicationContext()));
directionList.add(
new Direction(
"Свидание",
"количество событий - 2"));
directionList.add(
new Direction(
"Кино",
"количество событий - 43"));
DirectionAdapter adapter = new DirectionAdapter(getActivity().getApplication().getApplicationContext(), directionList);
recyclerView.setAdapter(adapter);
return rootView;
}}`
Класс Direction: `public class Direction {
private String directionTitle, directionCount;
public Direction(String directionTitle, String directionCount) {
this.directionTitle = directionTitle;
this.directionCount = directionCount;
}
public String getDirectionTitle() {
return directionTitle;
}
public String getDirectionCount() {
return directionCount;
}}`
Ваша ошибка в том, что вы не следуете конвенциям именования переменных в Java
. И не смотрите на подсказки IDE, которая говорит вам, что вы присваиваете одни переменные самим себе и не используете вовсе другие.
Если конкретно - у вас в конструкторе адаптера второй аргумент назван с большой буквы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Логика приложения: проверяю существование файла, если его нет - вызываю внутренний класс ParseBookCovers, который парсит json файл с сервера и записывает...
Не получается получить разрешение на использование интернета на телефоне androidПытался сделать это на android 6
Не могу понять в чем проблема, вроде все делаю по oracle tutorialsНо что-то не все верно получается