إنشاء الـ Repository: مستودع الـ livedata

م. خديجة باحويرثمنذ 4 سنوات

السلام عليكم و رحمة الله

في هذا الفيديو سيتم إنشاء الـ Repository:و هي مستودع الـ livedata

الكود للكلاس:

package com.example.wordlist;
import android.app.Application;
import android.os.AsyncTask;
import androidx.lifecycle.LiveData;
import androidx.room.Delete;
import java.util.List;
public class WordsRepository {
    private WordsDao mWordsDao;
    private LiveData<List<Words>> getAllWords;
    public WordsRepository (Application app)
    {
        WordRoomDb db = WordRoomDb.getInstance(app);
        mWordsDao = db.wordsDao();
        getAllWords = mWordsDao.getAllWords();
    }
    //operation
    //insert
    public void insert(Words word)
    {
        new InsertAsyncTask(mWordsDao).execute(word);
    }
    //delete
    public void delete(Words word)
    {
       new DeleteAsyncTask(mWordsDao).execute(word);
    }
    //update
    public void update(Words word)
    {
       new UpdateAsyncTask(mWordsDao).execute(word);
    }
    //getallwords
    public LiveData<List<Words>> getAllWords()
    {
        return getAllWords;
    }
    //delete all words
    public void deleteAllWords()
    {
        new DeleteAsyncTask(mWordsDao).execute();
    }
    private static class InsertAsyncTask extends AsyncTask<Words, Void, Void>{
        private WordsDao mWordsDao;
        public InsertAsyncTask(WordsDao wordsDao)
        {
            mWordsDao = wordsDao;
        }
        @Override
        protected Void doInBackground(Words... words) {
            mWordsDao.insert(words[0]);
            return null;
        }
    }
    private static class DeleteAsyncTask extends AsyncTask<Words, Void, Void>{
        private WordsDao mWordsDao;
        public DeleteAsyncTask(WordsDao wordsDao)
        {
            mWordsDao = wordsDao;
        }
        @Override
        protected Void doInBackground(Words... words) {
            mWordsDao.delete(words[0]);
            return null;
        }
    }
    private static class UpdateAsyncTask extends AsyncTask<Words, Void, Void>{
        private WordsDao mWordsDao;
        public UpdateAsyncTask(WordsDao wordsDao)
        {
            mWordsDao = wordsDao;
        }
        @Override
        protected Void doInBackground(Words... words) {
            mWordsDao.update(words[0]);
            return null;
        }
    }
    private static class DeleteAllWordsAsyncTask extends AsyncTask<Void, Void, Void>{
        private WordsDao mWordsDao;
        public DeleteAllWordsAsyncTask(WordsDao wordsDao)
        {
            mWordsDao = wordsDao;
        }
        @Override
        protected Void doInBackground(Void... voids) {
            mWordsDao.deleteAllWords();
            return null;
        }
    }
    
}

 

التعليقات (1)

HSN_:

السلام عليكم

جزاكي الله كل خير شوكرا جزيلا على هذا الشرح 

في الكود في هذا المقطع أظن في شيء وقع سهوا 

مكتوب في الكود في هذا المقطع

public void deleteAllWords(){ 
new DeleteAsyncTask(wordsDao).execute();
 }

سؤالي أليس المفروض نكتب

public void deleteAllWords(){ 
new DeleteAllWordsAsyncTask(wordsDao).execute();
 }

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !