Android Studio recyclerview Адаптер не подключен; пропускающий макет - PullRequest
0 голосов
/ 19 апреля 2020

Привет всем, у меня есть проблема с recyclerview, приложение работает в моем эмуляторе, но когда я начал тестирование на других устройствах, программа выдает такую ​​ошибку. пропускающий макет

этот фрагмент кода активности:

public class AsosiyFragment extends Fragment {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.form_asosiy, container, false);
        return rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        DBAdapter mDBAdapter = new DBAdapter(getContext());
        Spinner spinner_viloyatlar = view.findViewById(R.id.spinner_viloyatlar);

        RecyclerView recyclerView =  view.findViewById(R.id.roza_vaqtlari);
        recyclerView.setHasFixedSize(true);

        Context context = view.getContext();
        LinearLayoutManager layoutManager = new LinearLayoutManager(context);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);

        List<RamazonAdapter> ramazonAdapters = new ArrayList<>();
        ramazonAdapters.clear();

        String[] VILOYAT_NOMI_KIRIL  = {
                "Андижон","Бухоро",
                "Жиззах","Қашқадарё",
                "Қорақалпоғистон","Навоий",
                "Наманган","Самарқанд",
                "Сурхондарё","Сирдарё",
                "Тошкент","Фарғона",
                "Хоразм"
        };

        // Add viloyatlar to spinner
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i <= 12; i++){
            list.add(VILOYAT_NOMI_KIRIL[i]);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),R.layout.spinner_item,R.id.item,list);
        spinner_viloyatlar.setAdapter(adapter);

        // get all data from sqlite
        Cursor res = mDBAdapter.getAllData();
        final RamazonAdapter[] rAdapters = {null};
        while (res.moveToNext()){
            String data1 = res.getString(1);
            String data2 = res.getString(2);
            String data3 = res.getString(3);
            String data4 = res.getString(4);

            rAdapters[0] = new RamazonAdapter(data1,data2,data3,data4);
            ramazonAdapters.add(rAdapters[0]);
            Adapter adapter1 = new Adapter(getActivity(), ramazonAdapters);
            adapter.notifyDataSetChanged();
            recyclerView.setAdapter(adapter1);
        }
    }
}

этого адаптера:

public class Adapter extends  RecyclerView.Adapter<Adapter.ViewHolder>{
    Context context;
    private List<RamazonAdapter> ramazonAdapterList;

    public Adapter(Context context, List<RamazonAdapter> ramazonAdapterList){
        this.context              = context;
        this.ramazonAdapterList   = ramazonAdapterList;
    }

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

    @Override
    public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
            RamazonAdapter ramazonAdapter = ramazonAdapterList.get(position);
            holder.nameOfDay.setText(ramazonAdapter.getNameOfDay());
            holder.dateOfRoza.setText(ramazonAdapter.getDate());
            holder.iftorlikTime.setText(ramazonAdapter.getIftorlikTime());
            holder.saharlikTime.setText(ramazonAdapter.getSaharlikTime());
    }

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

    class ViewHolder extends RecyclerView.ViewHolder {
        TextView nameOfDay;
        TextView dateOfRoza;
        TextView iftorlikTime;
        TextView saharlikTime;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            nameOfDay    = itemView.findViewById(R.id.nameOfDay);
            dateOfRoza   = itemView.findViewById(R.id.dateOfRoza);
            iftorlikTime = itemView.findViewById(R.id.iftorlikTime);
            saharlikTime = itemView.findViewById(R.id.saharlikTime);
        }
    }
}

Я нашел несколько ответов на этот топи c и попробовал их, но я не сделал помогите пожалуйста

1 Ответ

0 голосов
/ 21 апреля 2020

Я думаю, что ошибка, с которой вы сталкиваетесь, связана с приведенным ниже строчным кодом

  Adapter adapter1 = new Adapter(getActivity(), ramazonAdapters);
        adapter.notifyDataSetChanged();
        recyclerView.setAdapter(adapter1);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...