【问题标题】:How to refresh LoaderManager如何刷新 LoaderManager
【发布时间】:2017-06-27 14:02:36
【问题描述】:

我阅读了很多帖子和指南,但在使用 LoaderManagerSQLite 数据库中获取数据时仍然遇到很多问题。

我已经为此苦苦挣扎了一个多星期,并且按照许多不同的示例多次编辑了我的代码,但问题仍然存在。

首先,我不得不说我的AsyncTaskLoader返回一个我创建的对象列表,所以我不能依赖CursorLoader的方法来“刷新”查询。

这是我的AsyncTaskLoader,我从中获得了我的联系人列表

public class MyLoader extends AsyncTaskLoader<List<MyContact>>{
    private List<MyContact> myContacts;   
    private Bundle bundle;   

    public MyLoader(Context context, Bundle bundle) {
        super(context);
        this.bundle = bundle;
    }

    public List<MyContact> loadInBackground(){
        myContacts = //here I build my List of  MyContact with data taken from a DB 
        return myContacts;
    }    
}

这是我实现 LoaderManager 方法的活动:

public class ContactsActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<List<MyContact>>{

     private LoaderManager loaderManager;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         loaderManager = getLoaderManager();    
         loaderManager.initLoader(1, null, this);    
     }

    ....
    @Override
    public Loader<List<MyContact>> onCreateLoader(int i, Bundle bundle) {
         return new MyLoader(this, bundle);
    }

    @Override
    public void onLoadFinished(Loader<List<MyContact>> loader, List<MyContact> myContacts) {
          Here I fill a RecyclerView with myContacts
    }

    @Override
    public void onLoaderReset(Loader<List<MyContact>> loader) {
    }
}

我的问题是,在数据库更新后,我应该通过“刷新”loaderManager 来获取 MyContacts 的更新列表。我不会向您展示我尝试实现目标的所有不同方式。

我按照 SO 和其他网站上的示例尝试了很多方法,我什至实现了 BroadcastReceiver,但我无法让它工作,而且我无法理解我的错误,因为我没有得到任何“java”错误。

【问题讨论】:

    标签: java android android-asynctask android-recyclerview android-loadermanager


    【解决方案1】:

    在刷新时尝试关注。它为相应的加载程序 ID 重置并重新启动加载程序。虽然我已经将它用于 cursor ,但它也应该适用于自定义对象。

    loaderManager.restartLoader(loaderId, null, context);
    

    【讨论】:

      【解决方案2】:

      尝试在更新 SQLite 数据库后立即添加以下代码行:

      getContentResolver().notifyChange(uri, null);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 2017-05-29
        • 2017-10-12
        • 1970-01-01
        • 2014-04-23
        相关资源
        最近更新 更多