Doctor Who
Doctor Who

Reputation: 43

Android RecyclerView: No adapter attached; skipping layout

Now I have changed grid to recyclerview grid, so I think all will be okay, but nope, I had one more problem. I was looking for same questions, try to fix my own problem, but nope, all doesn't help me.

Log:{

RecyclerView: No adapter attached; skipping layout

}

So this is my code:

 Database database;
int mId;
boolean isFabOpen;
RecyclerViewGridODAdapter recyclerViewGridODAdapter;
AlertDialog.Builder myDialog;
int[]Ids;
GridAutofitLayoutManager layoutManager;
private Animation fab_open,fab_close,rotate_forward,rotate_backward;
List<OneDayTD> oneDayList;
private static final String TAG = "MyLog";
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }

}

 @Override
public View onCreateView( LayoutInflater inflater,  ViewGroup container3,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v =inflater.inflate(R.layout.fragment_one_day_tasks,container3,false);
    View vds =inflater.inflate(R.layout.content_fragment_one_day_tasks,null);
    final View vd =inflater.inflate(R.layout.dialogod,null);
    TextView textView= (TextView) v.findViewById(R.id.ActiveMenu);
    TextView textView1= (TextView) v.findViewById(R.id.Alert);
    database = new Database(v.getContext());
    mId = database.getLastIdOD();
    if(mId>=1) {
        oneDayList = database.getOneDayList(1);
    }
    database.close();

    //dlg1 = new DialogFragment();
    final RecyclerView gridView = (RecyclerView) vds.findViewById(R.id.gridViewActiveOd);

     layoutManager = new GridAutofitLayoutManager(getActivity().getApplicationContext(), 160 );
    if(0<mId){

        Log.d("myLog","StartAdapter");

        Log.d("myLog","oki "+oneDayList.get(0).getTitle());

       recyclerViewGridODAdapter =new RecyclerViewGridODAdapter(oneDayList);
        gridView.setAdapter(recyclerViewGridODAdapter);//RecyclerView: No adapter attached; skipping layout
        gridView.setLayoutManager(layoutManager);//RecyclerView: No adapter attached; skipping layout
        gridView.setHasFixedSize(true);
        gridView.addOnItemTouchListener(new RecyclerTouchListener(getActivity().getApplicationContext(), gridView, new ClickListener() {
            @Override
            public void onClick(View view, final int position) {
                myDialog = new AlertDialog.Builder(getActivity());

                FrameLayout layout =  (FrameLayout) vd.findViewById(R.id.dialogod);
                final FloatingActionButton tap = (FloatingActionButton) vd.findViewById(R.id.fabTap);
                fab_open = AnimationUtils.loadAnimation(getActivity().getApplicationContext(), R.anim.fab_open);
                fab_close = AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.fab_close);
                rotate_forward = AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.rotate_forward);
                rotate_backward = AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.rotate_backward);
                final FloatingActionButton remake = (FloatingActionButton) layout.findViewById(R.id.fabRemake);
                remake.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        getActivity().finish();
                        Intent intent = new Intent(getActivity().getApplicationContext(),CreateOneDayActivity.class);
                        intent.putExtra("mId", oneDayList.get(position).getId());
                        startActivity(intent);

                        Snackbar.make(v, "Task Remake", Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();
                        gridView.refreshDrawableState();

                    }
                });
                final FloatingActionButton back = (FloatingActionButton) layout.findViewById(R.id.fabBack);
                back.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Snackbar.make(v, "Ok back", Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();

                    }
                });
                final FloatingActionButton del = (FloatingActionButton) layout.findViewById(R.id.fabDel);
                del.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        database = new Database(getActivity());
                        OneDayTD oneDayTD = database.getOneDay(oneDayList.get(position).getId());
                        database.deleteOD(oneDayTD);
                        Intent alarmIntent = new Intent(getActivity(), AlarmReceiver.class);
                        AlarmUtil.cancelAlarm(getActivity(), alarmIntent, oneDayTD.getId());
                        database.close();
                        Snackbar.make(v, "Ok you had put it int the del folder? bit rot some little time", Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();
                    }
                });
                final FloatingActionButton copy = (FloatingActionButton) layout.findViewById(R.id.fabClone);
                copy.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        database = new Database(getActivity());
                        OneDayTD oneDayTD = database.getOneDay(oneDayList.get(position).getId());
                        oneDayTD.setId(oneDayList.get(position).getId() + 1);
                        database.addOT(oneDayTD);
                        database.close();
                        Snackbar.make(v, "Ok you had copy that task", Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();

                    }
                });
                tap.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(isFabOpen){

                            tap.startAnimation(rotate_backward);
                            copy.startAnimation(fab_close);
                            del.startAnimation(fab_close);
                            remake.startAnimation(fab_close);
                            back.startAnimation(fab_close);

                            copy.setClickable(false);
                            del.setClickable(false);
                            remake.setClickable(false);
                            back.setClickable(false);
                            isFabOpen = false;


                        } else {

                            tap.startAnimation(rotate_forward);
                            copy.startAnimation(fab_open);
                            del.startAnimation(fab_open);
                            remake.startAnimation(fab_open);
                            back.startAnimation(fab_open);

                            copy.setClickable(true);
                            del.setClickable(true);
                            remake.setClickable(true);
                            back.setClickable(true);


                            isFabOpen = true;


                        }
                    }
                });
                CoordinatorLayout coordinatorLayout = (CoordinatorLayout) layout.findViewById(R.id.dialoodcontent);
                TextView title = (TextView) coordinatorLayout.findViewById(R.id.title_dialogod);
                title.setText(oneDayList.get(position).getTitle());
                TextView content = (TextView) coordinatorLayout.findViewById(R.id.tcontent);
                content.setText(oneDayList.get(position).getContent());
                TextView date= (TextView)coordinatorLayout.findViewById(R.id.date);
                date.setText(oneDayList.get(position).getDate());
                TextView time= (TextView) coordinatorLayout.findViewById(R.id.time);
                time.setText(oneDayList.get(position).getTime());
                ImageView imageView = (ImageView) coordinatorLayout.findViewById(R.id.imagepart);
                ImageView imageView1 = (ImageView) coordinatorLayout.findViewById(R.id.circle);
                int iconResId = getActivity().getResources().getIdentifier(oneDayList.get(position).getIcon(), "drawable", getActivity().getPackageName());
                imageView.setImageResource(iconResId);
                GradientDrawable bgShape = (GradientDrawable) imageView1.getDrawable();
                bgShape.setColor(Color.parseColor(oneDayList.get(position).getColour()));
                SeekBar seekBar = (SeekBar) coordinatorLayout.findViewById(R.id.volumeSelectSeek);
                seekBar.setMax(15);
                seekBar.setProgress(oneDayList.get(position).getVolume());
                seekBar.isSaveEnabled();
                TextView realmel = (TextView) coordinatorLayout.findViewById(R.id.truemelody);
                realmel.setText(oneDayList.get(position).getSound()+"("+oneDayList.get(position).getDirSound()+")");
                TextView typeofs= (TextView) coordinatorLayout.findViewById(R.id.toss);
                int v=oneDayList.get(position).getVibration();
                if(v==1){
                    typeofs.setText("Vibaration");
                }
                int os=oneDayList.get(position).getOriginalSound();
                if(os==1){
                    String i ="";
                    if(typeofs.getText().toString().isEmpty())
                    {
                        typeofs.setText("Sound");
                    }else{
                        i=typeofs.getText().toString() + " and ";
                        typeofs.setText(i+"Sound");
                    }
                }
                int wh=oneDayList.get(position).getWhistling();
                if(wh==1){
                    String i ="";
                    if(typeofs.getText().toString().isEmpty())
                    {
                        typeofs.setText("Whistle");
                    }else{
                        i=typeofs.getText().toString() + " and ";
                        typeofs.setText(i+"Whistle");
                    }
                }else{

                }
                myDialog.setView(layout);
                myDialog.show();

                //Intent intent = new Intent(getActivity().getApplicationContext(),CreateOneDayActivity.class);
                // intent.putExtra("mId",oneDayList.get(position).getId());
                // startActivity(intent);
            }

            @Override
            public void onLongClick(View view, int position) {

            }
        }));



    }else{
        textView1.setText("You Haven't got any Active Tasks !");
    }

    FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fabCreateOd);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            getActivity().finish();
            Intent intent = new Intent(getActivity().getApplicationContext(),CreateOneDayActivity.class);
            intent.putExtra("mId",1 + database.getLastIdOD());
            startActivity(intent);
            Snackbar.make(view, "New Task", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    return v;
}
public interface ClickListener {
    void onClick(View view, int position);

    void onLongClick(View view, int position);
}

public static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {

    private GestureDetector gestureDetector;
    private ClickListener clickListener;

    public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
        this.clickListener = clickListener;
        gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if (child != null && clickListener != null) {
                    clickListener.onLongClick(child, recyclerView.getChildPosition(child));
                }
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        View child = rv.findChildViewUnder(e.getX(), e.getY());
        if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
            clickListener.onClick(child, rv.getChildPosition(child));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
}

Upvotes: 0

Views: 631

Answers (1)

Shadab Ansari
Shadab Ansari

Reputation: 7070

Put

recyclerViewGridODAdapter =new RecyclerViewGridODAdapter(oneDayList); 

in onCreateView() instead of onCreate() like this .

 @Override
public View onCreateView( LayoutInflater inflater,  ViewGroup container3,
                         Bundle savedInstanceState) {
.....
    if(mId>=1) {
            oneDayList = database.getOneDayList(1);
        }
    recyclerViewGridODAdapter =new RecyclerViewGridODAdapter(oneDayList); 
...
}

The error is because oneDayList is empty when you are creating your adapter. You should either create your adapter in onCreateView() (as shown above) or refresh your adapter after you get values in oneDayList.

Upvotes: 1

Related Questions