Друзья, есть кто-нибудь, кто помогает мне с базой данных SQLite?Я новичок в Android, поэтому я задаю вопрос здесь.Я создал приложение с панелью администратора / онлайн-сервером и добавил в приложение базу данных SQLite для сохранения извлеченных данных в приложение.
Однако в моем приложении есть проблема, приложение не сохраняет извлеченные данныеДанные для приложения, но я не знаю, почему.Может кто-нибудь помочь мне выяснить, что не так с кодом?
Класс базы данных:
public class OfflineDatabase extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "offlinedata.db";
public static final String TABLE_OFFLINE_NAME = "tblOffline";
public static final String KEY_ID = "id";
public static final String KEY_ACTIVITY_NAME = "activity_name";
public static final String KEY_OFFLINE_DATA = "offline_data";
public OfflineDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_FAVOURITE_TABLE = "CREATE TABLE " + TABLE_OFFLINE_NAME + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+ KEY_ACTIVITY_NAME + " TEXT,"
+ KEY_OFFLINE_DATA + " TEXT)";
db.execSQL(CREATE_FAVOURITE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_OFFLINE_NAME);
// Create tables again
onCreate(db);
}
public long addOfflineData( ContentValues contentvalues, String s1) {
SQLiteDatabase db = this.getWritableDatabase();
return db.insert(TABLE_OFFLINE_NAME, s1, contentvalues);
}
public String getOfflineData(String activity_name) {
boolean count = false;
SQLiteDatabase db = this.getWritableDatabase();
String[] args = new String[]{activity_name};
Cursor cursor = db.rawQuery("SELECT "+KEY_OFFLINE_DATA+" FROM "+TABLE_OFFLINE_NAME+" WHERE "+KEY_ACTIVITY_NAME+"=? ", args);
if (cursor.moveToFirst()) {
//count = true;
return cursor.getString(cursor.getColumnIndexOrThrow(KEY_OFFLINE_DATA));
}
cursor.close();
db.close();
return "";
//return count;
}
public void update(String activity_name,ContentValues contentvalues) {
SQLiteDatabase db = this.getWritableDatabase();
db.update(TABLE_OFFLINE_NAME, contentvalues, KEY_ACTIVITY_NAME+" = '"+activity_name+"'", null);
db.close();
}
public void removeAll() {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM "+TABLE_OFFLINE_NAME);
db.close();
}
}
Класс фрагмента:
public class FragmentCategory extends Fragment {
private View root_view, parent_view;
private RecyclerView recyclerView;
private SwipeRefreshLayout swipeRefreshLayout;
private AdapterCategory adapterCategory;
public static final String EXTRA_OBJC = "key.EXTRA_OBJC";
private Call<CallbackCategories> callbackCall = null;
private StaggeredGridLayoutManager gaggeredGridLayoutManager;
DatabaseHandlerFavorite databaseHandler;
private InterstitialAd interstitialAd;
private OfflineDatabase databaseHelper;
int counter = 1;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
root_view = inflater.inflate(R.layout.fragment_category, null);
parent_view = getActivity().findViewById(R.id.main_content);
loadInterstitialAd();
swipeRefreshLayout = (SwipeRefreshLayout) root_view.findViewById(R.id.swipe_refresh_layout_category);
swipeRefreshLayout.setColorSchemeResources(R.color.orange, R.color.green, R.color.blue, R.color.red);
recyclerView = (RecyclerView) root_view.findViewById(R.id.recyclerViewCategory);
recyclerView.setHasFixedSize(true);
gaggeredGridLayoutManager = new StaggeredGridLayoutManager(1, 1);
recyclerView.setLayoutManager(gaggeredGridLayoutManager);
//set data and list adapter
adapterCategory = new AdapterCategory(getActivity(), new ArrayList<Category>());
recyclerView.setAdapter(adapterCategory);
databaseHelper = new OfflineDatabase(getActivity());
adapterCategory.setOnItemClickListener(new AdapterCategory.OnItemClickListener() {
@Override
public void onItemClick(View v, Category obj, int position) {
Intent intent = new Intent(getActivity(), ActivityDetailCategory.class);
intent.putExtra(EXTRA_OBJC, obj);
startActivity(intent);
showInterstitialAd();
}
});
// on swipe list
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
adapterCategory.resetListData();
requestAction();
}
});
requestAction();
return root_view;
}
private void displayApiResult(final List<Category> categories) {
adapterCategory.setListData(categories);
swipeProgress(false);
if (categories.size() == 0) {
showNoItemView(true);
}
}
private void requestCategoriesApi() {
ApiInterface apiInterface = RestAdapter.createAPI();
callbackCall = apiInterface.getAllCategories();
callbackCall.enqueue(new Callback<CallbackCategories>() {
@Override
public void onResponse(Call<CallbackCategories> call, Response<CallbackCategories> response) {
CallbackCategories resp = response.body();
if (resp != null && resp.status.equals("ok")) {
displayApiResult(resp.categories);
} else {
onFailRequest();
}
}
@Override
public void onFailure(Call<CallbackCategories> call, Throwable t) {
if (!call.isCanceled()) onFailRequest();
}
});
}
private void onFailRequest() {
swipeProgress(false);
if (NetworkCheck.isConnect(getActivity())) {
} else {
//showToast("Internet Not");
if(databaseHelper.getOfflineData("FragmentCategory").length()!=0) {
setJson(databaseHelper.getOfflineData("FragmentCategory"),false);
}
}
//databaseHelper.removeAll();
}
public void setJson(String result, Boolean isOnline) {
try {
} catch(Exception e) {
} finally {
}
//inseting result to database
if(isOnline) {
ContentValues offline_data = new ContentValues();
offline_data.put(OfflineDatabase.KEY_OFFLINE_DATA, result);
if(databaseHelper.getOfflineData("FragmentCategory").length()!=0) {
databaseHelper.update("FragmentCategory",offline_data);
} else {
offline_data.put(OfflineDatabase.KEY_ACTIVITY_NAME, "FragmentCategory");
databaseHelper.addOfflineData(offline_data, null);
}
}}
private class HomeSlider extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (null == result || result.length() == 0) {
} else {
setJson(result,true);
//myTest(result);
}
}
}
private void requestAction() {
showFailedView(false, "");
swipeProgress(true);
showNoItemView(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
requestCategoriesApi();
}
}, Constant.DELAY_TIME);
}
@Override
public void onDestroy() {
super.onDestroy();
swipeProgress(false);
if(callbackCall != null && callbackCall.isExecuted()){
callbackCall.cancel();
}
}
private void showFailedView(boolean flag, String message) {
View lyt_failed = (View) root_view.findViewById(R.id.lyt_failed_category);
((TextView) root_view.findViewById(R.id.failed_message)).setText(message);
if (flag) {
recyclerView.setVisibility(View.GONE);
lyt_failed.setVisibility(View.VISIBLE);
} else {
recyclerView.setVisibility(View.VISIBLE);
lyt_failed.setVisibility(View.GONE);
}
((Button) root_view.findViewById(R.id.failed_retry)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestAction();
}
});
}
private void showNoItemView(boolean show) {
View lyt_no_item = (View) root_view.findViewById(R.id.lyt_no_item_category);
((TextView) root_view.findViewById(R.id.no_item_message)).setText(R.string.no_category_found);
if (show) {
recyclerView.setVisibility(View.GONE);
lyt_no_item.setVisibility(View.VISIBLE);
} else {
recyclerView.setVisibility(View.VISIBLE);
lyt_no_item.setVisibility(View.GONE);
}
}
private void swipeProgress(final boolean show) {
if (!show) {
swipeRefreshLayout.setRefreshing(show);
return;
}
swipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(show);
}
});
}
private int dpToPx(int dp) {
Resources r = getResources();
return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()));
}
private void loadInterstitialAd() {
if (Config.ENABLE_ADMOB_INTERSTITIAL_ADS) {
interstitialAd = new InterstitialAd(getActivity());
interstitialAd.setAdUnitId(getResources().getString(R.string.admob_interstitial_unit_id));
interstitialAd.loadAd(new AdRequest.Builder().build());
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
interstitialAd.loadAd(new AdRequest.Builder().build());
}
});
} else {
Log.d("AdMob", "AdMob Interstitial is Disabled");
}
}
private void showInterstitialAd() {
if (Config.ENABLE_ADMOB_INTERSTITIAL_ADS) {
if (interstitialAd != null && interstitialAd.isLoaded()) {
if (counter == Config.ADMOB_INTERSTITIAL_ADS_INTERVAL) {
interstitialAd.show();
counter = 1;
} else {
counter++;
}
} else {
Log.d("AdMob", "Interstitial Ad is Disabled");
}
} else {
Log.d("AdMob", "AdMob Interstitial is Disabled");
}
}}