мои данные не сохраняются в моем приложении, но почему? - PullRequest
0 голосов
/ 29 ноября 2018

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

HomeLatestAdapter

LatestVideoAdapter.java

public class LatestVideoAdapter extends RecyclerView.Adapter<LatestVideoAdapter.ItemRowHolder> {

    private ArrayList<ItemMostView> dataList;
    private Context mContext;
    private DatabaseHelper databaseHelper;
    private InterstitialAd mInterstitial;
    private int AD_COUNT = 0;

    public LatestVideoAdapter(Context context, ArrayList<ItemMostView> dataList) {
        this.dataList = dataList;
        this.mContext = context;
        databaseHelper = new DatabaseHelper(mContext);
    }

    @Override
    public ItemRowHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_most_view_item, parent, false);
        return new ItemRowHolder(v);
    }

    @Override
    public void onBindViewHolder(final ItemRowHolder holder, final int position) {
        final ItemMostView singleItem = dataList.get(position);

        holder.text.setText(singleItem.getVideoName());
        holder.txt_cat_name.setText(singleItem.getCategoryName());
        holder.txt_time.setText(singleItem.getDuration());
        holder.text_view.setText(JsonUtils.Format(Integer.parseInt(singleItem.getViewC())));
        if (singleItem.getType().equals("local")) {
            Picasso.with(mContext).load(singleItem.getImageUrl()).into(holder.image);
        } else if (singleItem.getType().equals("server_url")) {
            Picasso.with(mContext).load(singleItem.getImageUrl()).into(holder.image);
        } else if (singleItem.getType().equals("youtube")) {
            Picasso.with(mContext).load(Constant.YOUTUBE_IMAGE_FRONT + singleItem.getVideoId() + Constant.YOUTUBE_IMAGE_BACK).into(holder.image);
        }

        holder.lyt_parent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Constant.LATEST_IDD = singleItem.getId();

                if (Constant.SAVE_ADS_FULL_ON_OFF.equals("true")) {
                    AD_COUNT++;
                    if (AD_COUNT == Integer.parseInt(Constant.SAVE_ADS_CLICK)) {
                        AD_COUNT = 0;
                        mInterstitial = new InterstitialAd(mContext);
                        mInterstitial.setAdUnitId(Constant.SAVE_ADS_FULL_ID);
                        AdRequest adRequest;
                        if (JsonUtils.personalization_ad) {
                            adRequest = new AdRequest.Builder()
                                    .build();
                        } else {
                            Bundle extras = new Bundle();
                            extras.putString("npa", "1");
                            adRequest = new AdRequest.Builder()
                                    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
                                    .build();
                        }
                        mInterstitial.loadAd(adRequest);
                        mInterstitial.setAdListener(new AdListener() {
                            @Override
                            public void onAdLoaded() {
                                // TODO Auto-generated method stub
                                super.onAdLoaded();
                                if (mInterstitial.isLoaded()) {
                                    mInterstitial.show();
                                }
                            }

                            public void onAdClosed() {
                                Intent intent_single = new Intent(mContext, ActivityVideoDetails.class);
                                mContext.startActivity(intent_single);

                            }

                            @Override
                            public void onAdFailedToLoad(int errorCode) {
                                Intent intent_single = new Intent(mContext, ActivityVideoDetails.class);
                                mContext.startActivity(intent_single);
                            }
                        });
                    } else {
                        Intent intent_single = new Intent(mContext, ActivityVideoDetails.class);
                        mContext.startActivity(intent_single);
                    }
                } else {
                    Intent intent_single = new Intent(mContext, ActivityVideoDetails.class);
                    mContext.startActivity(intent_single);
                }

            }
        });

        if (databaseHelper.getFavouriteById(singleItem.getId())) {
            holder.floating_fav.setImageResource(R.drawable.ic_fav_hov);
        } else {
            holder.floating_fav.setImageResource(R.drawable.ic_fav);
        }

        holder.floating_fav.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ContentValues fav_list = new ContentValues();
                if (databaseHelper.getFavouriteById(singleItem.getId())) {
                    databaseHelper.removeFavouriteById(singleItem.getId());
                    holder.floating_fav.setImageResource(R.drawable.ic_fav);
                    Toast.makeText(mContext, mContext.getString(R.string.favourite_remove), Toast.LENGTH_SHORT).show();
                } else {
                    fav_list.put(DatabaseHelper.KEY_ID, singleItem.getId());
                    fav_list.put(DatabaseHelper.KEY_TITLE, singleItem.getVideoName());
                    fav_list.put(DatabaseHelper.KEY_IMAGE, singleItem.getImageUrl());
                    fav_list.put(DatabaseHelper.KEY_VIEW, singleItem.getViewC());
                    fav_list.put(DatabaseHelper.KEY_TYPE, singleItem.getType());
                    fav_list.put(DatabaseHelper.KEY_PID, singleItem.getVideoId());
                    fav_list.put(DatabaseHelper.KEY_TIME, singleItem.getDuration());
                    fav_list.put(DatabaseHelper.KEY_CNAME, singleItem.getCategoryName());
                    databaseHelper.addFavourite(DatabaseHelper.TABLE_FAVOURITE_NAME, fav_list, null);
                    holder.floating_fav.setImageResource(R.drawable.ic_fav_hov);
                    Toast.makeText(mContext, mContext.getString(R.string.favourite_add), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

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

    public class ItemRowHolder extends RecyclerView.ViewHolder {
        public ImageView image;
        public TextView text, txt_cat_name, txt_time, text_view;
        public LinearLayout lyt_parent;
        FloatingActionButton floating_fav;

        public ItemRowHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.image);
            text = itemView.findViewById(R.id.text);
            lyt_parent = itemView.findViewById(R.id.rootLayout);
            txt_cat_name = itemView.findViewById(R.id.text_category);
            txt_time = itemView.findViewById(R.id.text_time);
            text_view = itemView.findViewById(R.id.text_view);
            floating_fav = itemView.findViewById(R.id.floating_fav);

        }
    }
}

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "favoritevideo.db";
    public static final String TABLE_FAVOURITE_NAME = "favourite";

    public static final String KEY_ID = "id";
    public static final String KEY_TITLE = "title";
    public static final String KEY_IMAGE = "image";
    public static final String KEY_VIEW = "rate";
    public static final String KEY_TYPE = "type";
    public static final String KEY_PID = "playid";
    public static final String KEY_TIME = "time";
    public static final String KEY_CNAME = "cname";


    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String CREATE_FAVOURITE_TABLE = "CREATE TABLE " + TABLE_FAVOURITE_NAME + "("
                + KEY_ID + " INTEGER,"
                + KEY_TITLE + " TEXT,"
                + KEY_IMAGE + " TEXT,"
                + KEY_VIEW + " TEXT,"
                + KEY_TYPE + " TEXT,"
                + KEY_PID + " TEXT,"
                + KEY_TIME + " TEXT,"
                + KEY_CNAME + " TEXT"
                + ")";
        db.execSQL(CREATE_FAVOURITE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVOURITE_NAME);
        // Create tables again
        onCreate(db);
    }

    public boolean getFavouriteById(String story_id) {
        boolean count = false;
        SQLiteDatabase db = this.getWritableDatabase();
        String[] args = new String[]{story_id};
        Cursor cursor = db.rawQuery("SELECT id FROM favourite WHERE id=? ", args);
        if (cursor.moveToFirst()) {
            count = true;
        }
        cursor.close();
        db.close();
        return count;
    }

    public void removeFavouriteById(String _id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM  favourite " + " WHERE " + KEY_ID + " = " + _id);
        db.close();
    }

    public long addFavourite(String TableName, ContentValues contentvalues, String s1) {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.insert(TableName, s1, contentvalues);
    }

    public ArrayList<ItemMostView> getFavourite() {
        ArrayList<ItemMostView> chapterList = new ArrayList<>();
        String selectQuery = "SELECT *  FROM "
                + TABLE_FAVOURITE_NAME;
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                ItemMostView contact = new ItemMostView();
                contact.setId(cursor.getString(cursor.getColumnIndexOrThrow(KEY_ID)));
                contact.setVideoName(cursor.getString(cursor.getColumnIndexOrThrow(KEY_TITLE)));
                contact.setImageUrl(cursor.getString(cursor.getColumnIndexOrThrow(KEY_IMAGE)));
                contact.setViewC(cursor.getString(cursor.getColumnIndexOrThrow(KEY_VIEW)));
                contact.setType(cursor.getString(cursor.getColumnIndexOrThrow(KEY_TYPE)));
                contact.setVideoId(cursor.getString(cursor.getColumnIndexOrThrow(KEY_PID)));
                contact.setDuration(cursor.getString(cursor.getColumnIndexOrThrow(KEY_TIME)));
                contact.setCategoryName(cursor.getString(cursor.getColumnIndexOrThrow(KEY_CNAME)));
                 chapterList.add(contact);
            } while (cursor.moveToNext());
        }
        cursor.close();
        db.close();
        return chapterList;
    }
}

latestDatabaseHelper.java

public class latestDatabaseHelper extends SQLiteOpenHelper {

    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "latest.db";
    public static final String TABLE_FAVOURITE_NAME = "latestvideo";

    public static final String KEY_ID = "id";
    public static final String KEY_AUTO_ID = "auto_id";
    public static final String KEY_TITLE = "title";
    public static final String KEY_IMAGE = "image";
    public static final String KEY_VIEW = "rate";
    public static final String KEY_TYPE = "type";
    public static final String KEY_PID = "playid";
    public static final String KEY_TIME = "time";
    public static final String KEY_CNAME = "cname";


    public latestDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String CREATE_FAVOURITE_TABLE = "CREATE TABLE " + TABLE_FAVOURITE_NAME + "("
                + KEY_ID + " INTEGER,"
                + KEY_AUTO_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                + KEY_TITLE + " TEXT,"
                + KEY_IMAGE + " TEXT,"
                + KEY_VIEW + " TEXT,"
                + KEY_TYPE + " TEXT,"
                + KEY_PID + " TEXT,"
                + KEY_TIME + " TEXT,"
                + KEY_CNAME + " TEXT"
                + ")";
        db.execSQL(CREATE_FAVOURITE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVOURITE_NAME);
        // Create tables again
        onCreate(db);
    }

    public boolean getFavouriteByIdRecent(String story_id) {
        boolean count = false;
        SQLiteDatabase db = this.getWritableDatabase();
        String[] args = new String[]{story_id};
        Cursor cursor = db.rawQuery("SELECT id FROM recentfavourite WHERE id=? ", args);
        if (cursor.moveToFirst()) {
            count = true;
        }
        cursor.close();
        db.close();
        return count;
    }

    public void removeFavouriteByIdRecent(String _id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM  recentfavourite " + " WHERE " + KEY_ID + " = " + _id);
        db.close();
    }

    public long addFavouriteRecent(String TableName, ContentValues contentvalues, String s1) {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.insert(TableName, s1, contentvalues);
    }

    public ArrayList<ItemMostView> getFavouriteRecent() {
        ArrayList<ItemMostView> chapterList = new ArrayList<>();
        String selectQuery = "SELECT *  FROM "
                + TABLE_FAVOURITE_NAME +" ORDER BY auto_id DESC";
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                ItemMostView contact = new ItemMostView();
                contact.setId(cursor.getString(cursor.getColumnIndexOrThrow(KEY_ID)));
                contact.setVideoName(cursor.getString(cursor.getColumnIndexOrThrow(KEY_TITLE)));
                contact.setImageUrl(cursor.getString(cursor.getColumnIndexOrThrow(KEY_IMAGE)));
                contact.setViewC(cursor.getString(cursor.getColumnIndexOrThrow(KEY_VIEW)));
                contact.setType(cursor.getString(cursor.getColumnIndexOrThrow(KEY_TYPE)));
                contact.setVideoId(cursor.getString(cursor.getColumnIndexOrThrow(KEY_PID)));
                contact.setDuration(cursor.getString(cursor.getColumnIndexOrThrow(KEY_TIME)));
                contact.setCategoryName(cursor.getString(cursor.getColumnIndexOrThrow(KEY_CNAME)));
                chapterList.add(contact);
            } while (cursor.moveToNext());
        }
        cursor.close();
        db.close();
        return chapterList;
    }
}

LatestVideoFragment.java

public class LatestVideoFragment extends Fragment {

    private static final String SubCatId = "ID";
    String selectedSubCatId;

    ArrayList<ItemMostView> mListItem;
    public RecyclerView recyclerView;
    LatestVideoAdapter LatestVideoAdapter;
    latestDatabaseHelper latestDatabaseHelper;
    TextView textView;
    private ProgressBar progressBar;
    int page = 1;



    public static LatestVideoFragment newInstance(String SCatId) {
        LatestVideoFragment f = new LatestVideoFragment();
        Bundle args = new Bundle();
        args.putString(SubCatId, SCatId);
        f.setArguments(args);
        return f;
    }




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

        selectedSubCatId = getArguments().getString(SubCatId);
        mListItem = new ArrayList<>();

        latestDatabaseHelper = new latestDatabaseHelper(requireActivity());
        progressBar = rootView.findViewById(R.id.progressBar);
        recyclerView = rootView.findViewById(R.id.rv_video);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1));
        ItemOffsetDecoration itemDecoration = new ItemOffsetDecoration(requireActivity(), R.dimen.item_offset);
        recyclerView.addItemDecoration(itemDecoration);

        if (JsonUtils.isNetworkAvailable(requireActivity())) {
            new getSubCat().execute(Constant.CATEGORY_ITEM_URL + selectedSubCatId + "&page=" + page);
            Log.e("yes", "yes");
        }

        return rootView;
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            Log.e("yes", "yes");
        } else {
            Log.e("yes", "no");

        }
    }

    private class getSubCat extends AsyncTask<String, Void, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressBar.setVisibility(View.VISIBLE);
            recyclerView.setVisibility(View.GONE);
        }

        @Override
        protected String doInBackground(String... params) {
            return JsonUtils.getJSONString(params[0]);
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            progressBar.setVisibility(View.GONE);
            recyclerView.setVisibility(View.VISIBLE);

            if (null == result || result.length() == 0) {
                showToast(getString(R.string.no_data));
            } else {
                try {
                    JSONObject mainJson = new JSONObject(result);
                    JSONArray jsonArray = mainJson.getJSONArray(Constant.CATEGORY_ARRAY_NAME);
                    JSONObject objJson;
                    for (int i = 0; i < jsonArray.length(); i++) {
                        objJson = jsonArray.getJSONObject(i);

                        ItemMostView objItem = new ItemMostView();

                        objItem.setId(objJson.getString(Constant.LATEST_ID));
                        objItem.setCategoryId(objJson.getString(Constant.LATEST_CATID));
                        objItem.setCategoryName(objJson.getString(Constant.LATEST_CAT_NAME));
                        objItem.setVideoUrl(objJson.getString(Constant.LATEST_VIDEO_URL));
                        objItem.setVideoId(objJson.getString(Constant.LATEST_VIDEO_ID));
                        objItem.setVideoName(objJson.getString(Constant.LATEST_VIDEO_NAME));
                        objItem.setDuration(objJson.getString(Constant.LATEST_VIDEO_DURATION));
                        objItem.setDescription(objJson.getString(Constant.LATEST_VIDEO_DESCRIPTION));
                        objItem.setImageUrl(objJson.getString(Constant.LATEST_IMAGE_URL));
                        objItem.setType(objJson.getString(Constant.LATEST_TYPE));
                        objItem.setViewC(objJson.getString(Constant.LATEST_VIEW));

                        mListItem.add(objItem);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                displayData();
            }
        }
    }


    @Override
    public void onResume() {
        super.onResume();
        mListItem = latestDatabaseHelper.getFavouriteRecent();
        displayData();
    }
    private void displayData() {
        if (getActivity() != null) {
            LatestVideoAdapter = new LatestVideoAdapter(getActivity(), mListItem);
            recyclerView.setAdapter(LatestVideoAdapter);
        }

    }
    public void showToast(String msg) {
        Toast.makeText(getActivity(), msg, Toast.LENGTH_LONG).show();
    }

}
...