Подгрузка CardView в фрагмент [требует правки]

256
06 ноября 2017, 20:14

Пытаюсь подгружать 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;
}}`
Answer 1

Ваша ошибка в том, что вы не следуете конвенциям именования переменных в Java. И не смотрите на подсказки IDE, которая говорит вам, что вы присваиваете одни переменные самим себе и не используете вовсе другие.

Если конкретно - у вас в конструкторе адаптера второй аргумент назван с большой буквы.

READ ALSO
Ошибка чтения файла внутренней памяти

Ошибка чтения файла внутренней памяти

Логика приложения: проверяю существование файла, если его нет - вызываю внутренний класс ParseBookCovers, который парсит json файл с сервера и записывает...

213
Запрос permission java android

Запрос permission java android

Не получается получить разрешение на использование интернета на телефоне androidПытался сделать это на android 6

223
NullPointerException при работе с TableView

NullPointerException при работе с TableView

Не могу понять в чем проблема, вроде все делаю по oracle tutorialsНо что-то не все верно получается

191