在我的列表视图没有填充数据库数据时,有什么更好的方法来显示进度指示器?

我找到了一些使用assynctask的方法,但在我的例子中,我使用的是Loader / CursorLoader.

public class TestActivity extends SherlockFragmentActivity implements
    LoaderCallbacks<Cursor> {

SimpleCursorAdapter mAdapter;
ListView mListView;

private static final String[] UI_BINDING_FROM = new String[] {
        TestDBAdapter.KEY_NAME,TestDBAdapter.KEY_ICON };

private static final int[] UI_BINDING_TO = new int[] { R.id.text,R.id.icon };

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_Test);

    mListView = (ListView) findViewById(R.id.listview);

    mAdapter = new TestAdapter(getApplicationContext(),R.layout.list_item_Test,null,UI_BINDING_FROM,UI_BINDING_TO,0);

    mListView.setAdapter(mAdapter);

    getSupportLoaderManager().initLoader(0,this);

}

@Override
public Loader<Cursor> onCreateLoader(int id,Bundle args) {


    Uri uri = ContentProviderTest.CONTENT_URI;

    CursorLoader cursorLoader = new CursorLoader(
            this,uri,null);

    return cursorLoader;

}

@Override
public void onLoadFinished(Loader<Cursor> loader,Cursor data) {
    mAdapter.swapCursor(data);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    mAdapter.swapCursor(null);
}
}

一个可能的解决方案是创建一个扩展ListFragment的新类并使用setListShown()方法,但我不知道它是否是解决此问题的最佳方法.

谢谢

解决方法

将一个小的ProgressBar添加到布局文件中,其可见性设置为“已消失”.在创建CursorLoader之前,将其可见性设置为“可见”.它会出现.在onLoadFinished中,将ProgressBar可见性设置为“已消失”.它将消失,您的ListView将加载.

我会使用小型进度条.要了解有关此内容的更多信息,请参阅android.widget.ProgressBar的参考文档.

顺便说一句,可见性由View.setVisibility控制.

android – 使用CursorLoader在填充列表视图之前显示进度指示器的更多相关文章

  1. 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?

    本篇文章中,作者主要介绍了如何基于Parse特点,打造一款类似Instagram的应用,完整而清晰的步骤,为开发者提供一次绝佳的学习体验。这款应用将完全使用Swift语言开发,Swift是苹果最新的编程语言,用于打造iOS应用。Parse并不用完全重写Swift,所以我们需要创建一个桥接头来处理它俩的兼容性。如果导入是完整的,Parse会及时提示。至此,我们在Parse中的全部工作已经完成。Parse是用Objective-C搭建的,而我们的项目则是用Swift语言,两者之间需要适当的设置才能兼容。

  2. swift – 如何将firebase数据库数据作为UICollection View的数据源?

    如果有帮助,这是我的Firebase数据.例如,“Banks”将是类别名称,单元格将由银行下的所有条目填充.更新:我想要实现的是类似于AppstoreUI,不同类别的应用程序和每个类别是具有水平滚动的集合视图.在我的应用程序中,企业属于firebase中列出的不同类别,每个类别都可以水平滚动.如何更新下面的集合视图属性?

  3. macos – CKQueryOperation queryCompletionBlock只运行3次

    我正在尝试使用CloudKit和光标从我的iCloud公共数据库下载一批记录.无论resultLimit如何设置,代码都可以在前3次执行中正常工作,但是从不执行第4个完成块.如果没有设置resultsLimit,我会得到300条记录,如果它设置为50,我会得到150,如果它设置为5,我得到15…关于如何进行的任何想法?

  4. android – 如何在ViewPager中使用cursorLoader?

    解决方法我无法评论,所以我正在写一个答案..您有一个实现LoaderCallbacks的活动.加载数据时,您的活动会收到onLoadFinished回调.在此方法中,您有一个应该在ViewPager中显示的Cursor.要显示Cursor中的数据,请在适配器上调用swapCursor方法.因此,每次加载数据时都不要创建适配器.创建一次,然后只需调用swapCursor即可.此外,每次都找不到ViewPager–findViewById是一个繁重的操作,它应该在创建视图层次结构后执行.所以,你的onLoad

  5. android – Room Invalidation tracker初始化两次

    我有一个水平回收站视图,其中包含自定义项目.每个项目都可以在Recycler视图中保存当前项目的位置.我想使用拖放移动项目时更新项目位置.但是当水平视图中有三个以上的项目时,数据会被删除.请帮帮我.SourceCode这是我在Logcat中得到的:E/ROOM:Invalidationtrackerisinitializedtwice:/.E/Itemmoved:Counterfrom3nexti

  6. android – 如何使用Cursor Adapter刷新listView

    我使用CursorAdapter创建了一个ListView.现在我正在尝试更新ListView并将值刷新到ListView.但我无法弄明白.如何使用Loader或changeCursor()来刷新我的ListView下面是我设置CursorAdapter的代码://SucessFully在这里完成我的按钮onClick我正在将值更新到数据库中//SucessFully完成我的UpdateData方法:CursorDemo类任何帮助都得到赞赏……});解决方法如果CursorDemo扩展了CursorAda

  7. android – 使用Cursor和ListView适配器获取大量数据

    我可以使这也在后台运行或以任何方式提高响应能力?

  8. android – 在contentProvider中选择前n行

    我选择这个:使用ContentQueyMap,我可以缓存Cursor数据并在Cursor关闭的情况下迭代它.现在,我想要选择Corsor只检索前五十行.在mQueryMap.getRows().entrySet()中循环50次的解决方案是不正确的:我不希望mQueryMap获取Cursor的所有行,但只有前五十行.任何的想法?是否存在where子句只能获得前n行?解决方法你可以做到排序后“LIMITx”.干杯

  9. android – 为什么cursorLoader没有通知源数据的变化?

    我有一个简单的contentProvider,一个带有ListView的布局和一个用于在内容Provider和CursorLoader中添加Items的按钮.http://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html#onLoadFinished(android.content.Load

  10. android – 如何对CursorLoader结果进行排序?

    我使用CursorLoader查询结果,这不是我想要在ListFramgenet中显示的顺序.怎么排序呢?我用它来设置适配器:创建加载器:嗯,查询结果有纬度和经度.我想计算我的位置和这些结果之间的距离.并按距离asc排序.怎么排序呢?任何答案都会被批评解决方法这实际上非常简单:由此:对此:请记住,如果您的提供商中有一些方法可以检查投射并引发异常,您必须在进行测试时将其注释掉,或者将新列添加到官方投影数组中.

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部