标签: android-loadermanager

10
推荐指数
1
解决办法
3888
查看次数

SimpleCursorAdapter的旧构造函数已弃用..真的吗?

这里说它SimpleCursorAdapter的API级别1构造函数已被弃用,建议使用LoaderManagerCursorLoader.

但是深入研究LoaderManagerCursorLoader使用我发现这个例子里面的内部类扩展了一个ListFragment(我认为是Fragment本身的扩展),我们创建了一个CursorLoader.一切似乎确定,不同的是,其实CursorLoader需要一个Uri作为参数.所以这意味着我需要创建一个ContentProvider访问我的数据库的权限.

我必须承认,为了创建一个简单的ListView来自数据库的项目,我们必须完成所有这些操作才能看起来有点过分.特别是如果我不打算将我的数据库数据提供给其他应用程序,并且内容提供商的主要目的是这样做.

那真的值得吗?

特别是在像我这样的情况下,要获取的内容可能会很小.我认真考虑用旧方式做,你怎么说?

sqlite android uri android-contentprovider android-loadermanager

9
推荐指数
1
解决办法
8804
查看次数

ListActivity中的getLoaderManager

我希望在ListActivity中实现Loader,但活动不识别getLoaderManager.

     @Override
     public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);


    dbHelper =  new DBHelper(this,DBNAME,FindPackageName(), TABLE_NAME);

    sql = dbHelper.getReadableDataBase();
    //Log.d("Gaurav","Database Open");
    String[] from = new String[]{"word","_id","MyList"};
    int[] to = new int[]{R.id.listrow };

    simpleCursorLoader = new SimpleCursorLoader(this, TABLE_NAME, from, null, null, null, null, null, null, sql);



    //query result will be whole database
    //cursor = sql.query(TABLE_NAME, from, null, null, null, null, null);
    //startManagingCursor(cursor); //this method is deprecated
    //Log.d(TAG,"Cursor Set");



    completerOrMyListAdapter = new CompleteOrMyListAdapter(this,
            R.layout.completeormylist_adapter, cursor, from, to, dbHelper); 
    setListAdapter(completerOrMyListAdapter);  

    // Prepare the loader.  Either re-connect …
Run Code Online (Sandbox Code Playgroud)

android listactivity android-loadermanager

9
推荐指数
2
解决办法
8060
查看次数

CursorAdapter有什么用?

CursorAdapter有3个构造函数.让我们看一下指南和参考.

1)CursorAdapter(上下文上下文,光标c)

不推荐使用此构造函数.不鼓励使用此选项,因为它会导致在应用程序的UI线程上执行Cursor查询,从而导致响应能力较差甚至应用程序无响应错误.或者,使用带有CursorLoader的LoaderManager.

2)CursorAdapter(Context context,Cursor c,boolean autoRequery)

允许控制自动重新查询的构造函数.建议您不要使用它,而是使用 CursorAdapter(Context,Cursor,int).

3)CursorAdapter(上下文上下文,Cursor c,int标志)

推荐的构造函数.

flags 用于确定适配器行为的标志; 可以是FLAG_AUTO_REQUERY和FLAG_REGISTER_CONTENT_OBSERVER的任意组合.

FLAG_AUTO_REQUERY 不推荐使用此常量.不鼓励使用此选项,因为它会导致在应用程序的UI线程上执行Cursor查询,从而导致响应能力较差甚至应用程序无响应错误.或者,使用带有CursorLoader的LoaderManager.

FLAG_REGISTER_CONTENT_OBSERVER.将CursorAdapter与CursorLoader一起使用时,不需要此标志.

CursorAdapter(Context context,Cursor c,int flags)是推荐的构造函数,但是可能的标志是2,当使用带有CursorLoader的CursorAdapter时,不推荐使用其中一个,而不需要另一个.如果我使用带有CursorLoader的CursorAdapter,我必须使用此构造函数并将零作为标志传递?在这种情况下,构造函数是否与#1相同?

android constructor android-loadermanager android-cursoradapter

9
推荐指数
1
解决办法
4404
查看次数

Android - onLoadFinished没有调用

我正面临着Loader的问题.

我有一个Activity,它显示从本地DB检索的记录列表.活动开始时,记录将通过LoaderManager.initLoader()方法自动加载.

还可以通过ActionBarSherlock中的刷新按钮手动刷新列表.但是,在完成另一个向DB添加记录的活动之后,不会调用onLoadFinished.

我正在使用SimpleCursorLoader,这里是活动的代码片段:

@Override
public void onStart() {
   ...
   getSupportLoaderManager().initLoader(0, null, this);
}

@Override
public void onPause() {
   ...
   getSupportLoaderManager().destroyLoader(0);
}

public void refreshRecords() {
   getSupportLoaderManager().restartLoader(0, null, this);
}

@Override
public Loader<Cursor> onCreateLoader(int id, final Bundle args) {
Loader<Cursor> l = new SimpleCursorLoader(this) {
    @Override
    public Cursor loadInBackground() {
        return recordDAO.getCursor();
    }
};
l.forceLoad();
return l;
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {
   // updateUI
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
Run Code Online (Sandbox Code Playgroud)

问题是,在完成其他活动之后,会onLoaderCreate …

android android-loadermanager android-loader

9
推荐指数
1
解决办法
1万
查看次数

ActionBarSherlock + Maps + Loaders = java.lang.NoClassDefFoundError

编辑:有关详细的操作方法,请查看我的答案.

我现在挣扎了两天,希望有人可以提供帮助.

我正在尝试将最新的ActionBarSherlock(4.0)与MapView一起使用.我知道片段存在问题,但我不需要它们.但我需要Loaders,看来,使用Loaders我也必须扩展FragmentActivity.没问题,我想,我们有来自Pete Doyle 的android-support-v4-googlemaps.正如许多SO线程和Google网上论坛所建议的,我使用android-support-v4-googlemaps JAR(实际上是android-support-v13-r7-googlemaps.jar)而不是android-support-v4.jar来构建ABS.然后我用它作为我项目的库.

现在,我希望以这种方式进行活动:

public class BananoutMapActivity extends SherlockFragmentActivity implements LoaderCallbacks<ArrayList<EventItem>>{

问题:

它编译,但抛出运行时错误: E/AndroidRuntime(29159): java.lang.NoClassDefFoundError: ndl.klimczak.bananout.BananoutMapActivity

我三重检查的事情:

  • ActionBarSherlock库项目和我的项目都针对Google API 4.0.3
  • 我有<uses-library android:name="com.google.android.maps" />,我在应用程序标签中有它.
  • 我在项目的构建路径中也有相同的android-support-v13-r7-googlemaps.jar
  • .BananoutMapActivity在我的清单中宣布过

有趣的是:

  • 当我在ICS模拟器上运行它时它会工作(错误出现在2.*模拟器和我的2.3.7设备上),在Honeycomb上,它很可能会工作,这是使用ACL的问题我猜

  • 当我删除implements LoaderCallbacks<ArrayList<EventItem>>它也有效的部分,但这样我就无法使用LoaderManager

为什么在NoClassDefFoundError错误以及如何让我的MapCapableSherlockEnabledFragmentActivity中的加载器工作?

android android-maps actionbarsherlock android-loadermanager

8
推荐指数
2
解决办法
3415
查看次数

getSupportLoaderManager()在不同的片段中使用相同的ID?

我在FragmentActivity中使用多个ListFragments创建一个viewPager.为了填充不同的列表视图,我在加载器中获得LoaderManager和initiliaze.我希望每个片段都有一个唯一的LoaderManager,但是,片段没有getSupportLoaderManager()方法,所以我需要调用父片段活动:

getActivity().getSupportLoaderManager()
Run Code Online (Sandbox Code Playgroud)

我的Loaders在不同片段中识别的这种方法的问题与彼此冲突.当你已经在一个片段中拥有多个加载器id时,它会变得有点麻烦.那么有没有办法为每个片段获取一个唯一的LoaderManager,而不是调用父片段?我基本上希望能够在多个片段上使用相同的id.

谢谢

android android-cursor android-listfragment android-loadermanager android-support-library

8
推荐指数
2
解决办法
6086
查看次数

是onLoadFinished()异步(后台线程)?

我目前正在寻找使用装载程序管理器在drawerlayout中填充我的expandablelistview.我不能在文档中发现任何地方如果在回调函数onLoadFinished()在UI线程或在后台线程上运行.它是在后台线程吗?

android android-loadermanager

8
推荐指数
1
解决办法
3720
查看次数

我必须使用Fragments来获取LoaderManager吗?

根据一些文档,我可以在Activity或Fragment中使用Loader,但兼容包显示只有FragmentActivity具有getLoaderManager()方法.

由于旧的托管游标已被弃用,我们必须使用Cursor Loader.那么为什么这个数据管理功能应该与UI小部件的选择联系起来呢?对我来说完全是无稽之谈.

谢谢P.

android android-loadermanager

7
推荐指数
1
解决办法
2043
查看次数

使用支持库时LoaderManager出错

我正在尝试将我的代码从使用游标转换为使用CursorLoaders.为了支持旧版本的Android,我安装了支持库,而不是导入android.content.CursorLoader,我正在导入android.support.v4.content.CursorLoader.现在编译好的代码会抛出两个错误.我实现它时,第一个错误是在LoaderManager上.错误是:LoaderManager无法解析为某种类型.第二个错误是对initLoader的调用.错误是:LoaderManager类型中的方法initLoader(int,Bundle,LoaderManager.LoaderCallbacks)不适用于参数(int,Bundle,MyList).这是我的代码:

public class MyList extends ListActivity implements LoaderManager.LoaderCallbacks<Cursor> {

private static final String[] PROJECTION = new String[] { "_id", "fieldname" };
private static final int LOADER_ID = 0;
private static final String MYTABLE_BASEPATH = "MyTable_tbl";
private static final String AUTHORITY = "SQLData";
public static final Uri MY_URI = Uri.parse("content://" + AUTHORITY + "/" + MYTABLE_BASEPATH);
private SimpleCursorAdapter mAdapter;

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent myData = getIntent();
    Bundle info = myData.getExtras();

    if (info != null){
        Cursor c; …
Run Code Online (Sandbox Code Playgroud)

android android-loadermanager android-cursorloader

7
推荐指数
1
解决办法
1万
查看次数