Ни как не получается отобразить recyclerview во fragment

Код в MainActivity работает как надо, но стоит перенести все во Fragment, то ноль. До этого задавал вопрос на эту тему, ошибку нашел в том, что не передавались данные из БД, начал логировать и нашел ошибку ("_id"); а было ("id"); после этого логи начали показывать данные в таблице, но не отображаются..

Взял проект с ютуба подумав, может с моим проектом не так, просто изменив с Main на Fragment

public class IncomeFragment extends Fragment implements View.OnClickListener {
    private static final String TAG = "myLog";
    private RecyclerView mRecyclerView;
    private RecyclerView.LayoutManager mLayoutManager;
    private MyDatabaseHelper dbHelper;
    private CustomAdapter customAdapter;
    private FloatingActionButton add_btn;


    ViewGroup viewGroup;
    ArrayList<String> book_id, book_title, book_author, book_pages;



    public void IncomeFragment() {

    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        viewGroup = (ViewGroup) inflater.inflate(R.layout.income_fragment, container, false);
        mRecyclerView = (RecyclerView) viewGroup.findViewById(R.id.recyclerView);
        mRecyclerView.setHasFixedSize(true);
        Log.e(TAG,"Полученны данные");
        mLayoutManager = new LinearLayoutManager(getContext());
        dbHelper = new MyDatabaseHelper(getActivity());
        customAdapter = new CustomAdapter(getActivity(),getContext(),book_id, book_title, book_author,
                    book_pages);

        mRecyclerView.setAdapter(customAdapter);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        initFabMenu();
        storeDataInArrays();

        dbHelper = new MyDatabaseHelper(getActivity());
        book_id = new ArrayList<>();
        book_title = new ArrayList<>();
        book_author = new ArrayList<>();
        book_pages = new ArrayList<>();

        return viewGroup;

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.add_btn:
                //Toast.makeText(getContext(),"Переход",Toast.LENGTH_LONG).show();
                startActivity(new Intent(getActivity(), AddActivity.class));
                break;
        }
    }

    private void initFabMenu(){
        add_btn = viewGroup.findViewById(R.id.add_btn);
        add_btn.setOnClickListener(this);
    }

    void storeDataInArrays(){

        try {

            Log.e(TAG,"Удалось считать данные");
            Cursor cursor = dbHelper.readAllData();
            if(cursor.getCount() == 0){
                Toast.makeText(getContext(),"Нет данных",Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(getContext(),"Есть даныые",Toast.LENGTH_LONG).show();
                while (cursor.moveToNext()){
                    book_id.add(cursor.getString(0));
                    book_title.add(cursor.getString(1));
                    book_author.add(cursor.getString(2));
                    book_pages.add(cursor.getString(3));
                }
            }

        } catch (Exception e) {
            Log.e(TAG,"Не удалось считать данные");
        }

    }

}



DB


public class MyDatabaseHelper extends SQLiteOpenHelper {

    private static final String TAG = "myLog";
    private Context context;
    private static final String DATABASE_NAME = "MyBook.db";
    private static final int DATABASE_VERSION = 6;

    private static final String TABLE_NAME = "book";
    private static final String COLUMN_ID = "_id";
    private static final String COLUMN_TITLE = "book_title";
    private static final String COLUMN_AUTHOR = "book_author";
    private static final String COLUMN_PAGES = "book_pages";

    public MyDatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            Log.e(TAG, "База создана");
            String query = "CREATE TABLE " + TABLE_NAME +
                    " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    COLUMN_TITLE + " TEXT, " +
                    COLUMN_AUTHOR + " TEXT, " +
                    COLUMN_PAGES + " INTEGER);";
            db.execSQL(query);

        } catch (SQLException e) {
            Log.e(TAG, "Ошибка создание БД");
        }

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public void addBook(String title, String author, int pages) {

        try {
            Log.e(TAG, " удалось записать данные в БД");

            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues cv = new ContentValues();
            cv.put(COLUMN_TITLE, title);
            cv.put(COLUMN_AUTHOR, author);
            cv.put(COLUMN_PAGES, pages);
            long result = db.insert(TABLE_NAME, null, cv);
            if (result == -1) {
                Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, "Added Successfully!", Toast.LENGTH_SHORT).show();

            }

        } catch (Exception e) {
            Log.e(TAG, "Не удалось записать данные в БД");
        }

    }

    public Cursor readAllData(){

        String query = "SELECT * FROM " + TABLE_NAME;
        SQLiteDatabase db = this.getReadableDatabase();
        Log.e(TAG, "--- Таблицы в моей БД: ---");
        // делаем запрос всех данных из таблицы mytable, получаем Cursor
        Cursor c = db.rawQuery(query, null);
        // ставим позицию курсора на первую строку выборки
        // если в выборке нет строк, вернется false
        if (c.moveToFirst()) {

            // определяем номера столбцов по имени в выборке
            int idColIndex = c.getColumnIndex("_id");
            int book_title = c.getColumnIndex("book_title");
            int book_author = c.getColumnIndex("book_author");
            int book_pages = c.getColumnIndex("book_pages");

            do {
                // получаем значения по номерам столбцов и пишем все в лог
                Log.e(TAG,
                        "ID = " + c.getInt(idColIndex) +
                                ", book_title = " + c.getString(book_title) +
                                ", book_author = " + c.getString(book_author) +
                                ", book_pages = " + c.getString(book_pages));
                // переход на следующую строку
                // а если следующей нет (текущая - последняя), то false - выходим из цикла
            } while (c.moveToNext());
        } else
            Log.e(TAG, "0 rows");
        c.close();

        return c;
    }



    public void updateData(String row_id, String title, String author, String pages){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TITLE, title);
        cv.put(COLUMN_AUTHOR, author);
        cv.put(COLUMN_PAGES, pages);

        long result = db.update(TABLE_NAME, cv, "_id=?", new String[]{row_id});
        if(result == -1){
            Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(context, "Updated Successfully!", Toast.LENGTH_SHORT).show();
        }

    }

    public void deleteOneRow(String row_id){
        SQLiteDatabase db = this.getWritableDatabase();
        long result = db.delete(TABLE_NAME, "_id=?", new String[]{row_id});
        if(result == -1){
            Toast.makeText(context, "Failed to Delete.", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(context, "Successfully Deleted.", Toast.LENGTH_SHORT).show();
        }
    }

    public void deleteAllData(){
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM " + TABLE_NAME);
    }

}


Adapter

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
    private static final String TAG = "myLog";
    private Context context;
    private Activity activity;
    private ArrayList<String> book_id, book_title, book_author, book_pages;

    public CustomAdapter(Activity activity, Context context, ArrayList<String> book_id,
                         ArrayList<String> book_title, ArrayList<String> book_author,
                         ArrayList<String> book_pages){

        this.activity = activity;
        this.context = context;
        this.book_id = book_id;
        this.book_title = book_title;
        this.book_author = book_author;
        this.book_pages = book_pages;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.my_row, parent, false);
        return new MyViewHolder(viewGroup);
    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
       try {
           Log.e(TAG,"Holder передал данные");
           holder.book_id_txt.setText(String.valueOf(book_id.get(position)));
           holder.book_title_txt.setText(String.valueOf(book_title.get(position)));
           holder.book_author_txt.setText(String.valueOf(book_author.get(position)));
           holder.book_pages_txt.setText(String.valueOf(book_pages.get(position)));
           //Recyclerview onClickListener
           holder.mainLayout.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   Intent intent = new Intent(context, UpdateActivity.class);
                   intent.putExtra("_id", String.valueOf(book_id.get(position)));
                   intent.putExtra("title", String.valueOf(book_title.get(position)));
                   intent.putExtra("author", String.valueOf(book_author.get(position)));
                   intent.putExtra("pages", String.valueOf(book_pages.get(position)));
                   activity.startActivityForResult(intent, 1);
               }
           });

       } catch (Exception e) {
           Log.e(TAG,"Не удалось передать Holder");
       }



    }

    @Override
    public int getItemCount() {
        //return book_id.size();
        return (book_id == null) ? 0 : book_id.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {

        TextView book_id_txt, book_title_txt, book_author_txt, book_pages_txt;
        LinearLayout mainLayout;

        MyViewHolder(@NonNull View itemView) {
            super(itemView);
            book_id_txt = itemView.findViewById(R.id.book_id_txt);
            book_title_txt = itemView.findViewById(R.id.book_title_txt);
            book_author_txt = itemView.findViewById(R.id.book_author_txt);
            book_pages_txt = itemView.findViewById(R.id.book_pages_txt);
            mainLayout = itemView.findViewById(R.id.mainLayout);
            //Animate Recyclerview
            Animation translate_anim = AnimationUtils.loadAnimation(context, R.anim.translate_anim);
            mainLayout.setAnimation(translate_anim);
        }

    }

}

Ответы (0 шт):