suspend fun countriesStatesCities() = apiProvider.countriesStatesCities()
suspend fun jobsSubJobs() = apiProvider.jobsSubJobs()
کدهای ApiProvider
suspend fun countriesStatesCities() = apiInterface.countriesStatesCities()
suspend fun jobsSubJobs() = apiInterface.jobsSubJobs()
کدهای ApiInterface
@POST("countries_states_cities")
suspend fun countriesStatesCities():ArrayList<CountryList>
@POST("jobs_sub_jobs")
suspend fun jobsSubJobs():ArrayList<JobList>
کدهای DatabaseRepository
suspend fun addCountry(country: Country){
countryDao.insert(country)
}
suspend fun addState(state: State){
stateDao.insert(state)
}
suspend fun addCity(city: City){
cityDao.insert(city)
}
suspend fun addJob(job: Job){
jobDao.insert(job)
}
suspend fun addSubJob(subSection: SubSection){
subJobDao.insert(subSection)
}
و برای تک تک فیلدها یک فایل کوئری نوشته شده مثلا برای کشور فایل CountyDao
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insert(country: Country)
سوال
fun_code 215
سلام و عرض ادب
با یه مشکل عجیب مواجه شدم.
زمان ورود به اپلیکیشن میام از سرور لیست استان ها و شهرها رو میگیرم. لیست رشته های تحصیلی رو هم میگیرم.
کلی دیتا هست که بصورت جیسون دریافت میشه.
با کدهای زیر در دیتابیس ذخیره میکنم.
اما مشکل اینجاست که با اولین ورود همه دیتاها ثبت نمیشن و انگار مثلا گاهی 70 درصد دیتاها یا گاهی بیشتر یا کمتر ذخیره میشه.
وقتی چندین مرتبه وارد اپ میشیم به مرور انگار دیتا رو ذخیره و تکمیل میکنه !
مشکل این نقص در ذخیره سازی چیه ؟
در کدهای اولین اکتیویتی و در رویداد onCreate این دو تابع فراخوانی میشن و بعد وارد اکتیوتی اصلی میشیم.
fun countriesStatesCities() = liveData(Dispatchers.IO) { emit(Resource.loading(null)) try { emit(Resource.success(mainRepository.countriesStatesCities())) }catch (e:Exception){ emit(Resource.error(null,e.message)) } } fun jobsSubJobs() = liveData(Dispatchers.IO) { emit(Resource.loading(null)) try { emit(Resource.success(mainRepository.jobsSubJobs())) }catch (e:Exception){ emit(Resource.error(null,e.message)) } }
کدهای MainRepository
suspend fun countriesStatesCities() = apiProvider.countriesStatesCities() suspend fun jobsSubJobs() = apiProvider.jobsSubJobs()
کدهای ApiProvider
suspend fun countriesStatesCities() = apiInterface.countriesStatesCities() suspend fun jobsSubJobs() = apiInterface.jobsSubJobs()
کدهای ApiInterface
کدهای DatabaseRepository
suspend fun addCountry(country: Country){ countryDao.insert(country) } suspend fun addState(state: State){ stateDao.insert(state) } suspend fun addCity(city: City){ cityDao.insert(city) } suspend fun addJob(job: Job){ jobDao.insert(job) } suspend fun addSubJob(subSection: SubSection){ subJobDao.insert(subSection) }
و برای تک تک فیلدها یک فایل کوئری نوشته شده مثلا برای کشور فایل CountyDao
@Insert(onConflict = OnConflictStrategy.IGNORE) fun insert(country: Country)
لینک ارسال
به اشتراک گذاری در سایت های دیگر
6 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.