22
Июл
2021

Как правильно заполнить массив до вызова AdapterFragment? java

Я получаю информацию из retrofit с файла и заполняю массив в Activity в OnCreate Создав фрагмент и его настроев, программа ломается (в getItemCount) и пишет, что массив пустой и не понимает, что я хочу вывести. Как можно заполнить массив до начала инициализации класса Адаптера фрагмента?

Метод заполнения данных в массив

        public void onResponse(Call<Example> call, Response<Example> response) {
            Example examples = response.body();
            for(int i = 0; i < examples.getResponse().size(); i++){
                String f_name = response.body().getResponse().get(i).getfName();
                String l_name = response.body().getResponse().get(i).getlName();
                String birthday = response.body().getResponse().get(i).getBirthday();
                String SpecName = response.body().getResponse().get(i).getSpecialty()
                        .iterator().next().getName();
                String SpecId =  response.body().getResponse().iterator().next().getSpecialty()
                        .iterator().next().getSpecialtyId().toString();
                String AvatarUrl = response.body().getResponse().get(i).getAvatrUrl();
                workerList.add(new Worker(f_name, l_name, birthday, SpecName, SpecId, AvatarUrl));

            }
            CurrectName(workerList);
            NewDataFormat(workerList);

        }

Кусок кода в Адапторе фрагмента

public class dataAdapter extends RecyclerView.Adapter<dataAdapter.dataViewHolder> {
    Context context;
    List<Worker> workerList;

    public dataAdapter(Context context, List<Worker> workerList){
        this.context = context;
        this.workerList = workerList;
    }

    @Override
    public dataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.single_data_fragment, parent, false);
        return new dataViewHolder(view);
    }

    @Override
    public void onBindViewHolder(dataAdapter.dataViewHolder holder, int position) {

        holder.FName.setText(workerList.get(position).getFname());
        holder.LName.setText(workerList.get(position).getLname());
        holder.Age.setText(workerList.get(position).getAge());
        if (workerList.get(position).getAvatarUrl() != ""){
            Picasso.with(context).load(workerList.get(position).getAvatarUrl()).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(holder.imageView);
        } else {
            Picasso.with(context).load(R.mipmap.ic_launcher).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(holder.imageView);
        }

    }

    @Override
    public int getItemCount() {
        return workerList.size();
    }

Вот сама ошибка

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
        at com.example.applast.FirstFrame.dataAdapter.getItemCount(dataAdapter.java:52)

Примечание: Я довольно слаб в Android программировании, поэтому было бы не плохо, если вы смогли подробно объяснить, что за чем следует

Источник: https://ru.stackoverflow.com/questions/1307818/%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2-%D0%B4%D0%BE-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%B0-adapterfragment-java

Тебе может это понравится...

Добавить комментарий