Android:何时将控件绑定到数据库

时间:2011-04-29 19:55:03

标签: android sqlite binding android-activity textview

活动期间将我的控件(例如textview)绑定到SQLite数据库中的值的最佳时间是什么时候?我想我记得你应该在onStart()中做到这一点,但我见过的大多数例子都是在onCreate()中设置了值。

以下是代码示例:

//I think this always goes in onCreate
MyDb db = new MyDB();
db.open();
Textview tvTextView;
tvTextView = findViewById(R.id.tv1);

//I'm not sure whether to put this in onCreate(), onStart(), or onResume()
tvTextView.setText(db.getMyText());

通常,MyDb和TextView将是整个班级的变量。

2 个答案:

答案 0 :(得分:2)

这取决于你想要的行为。如果您只希望一次设置文本,onCreate()就足够了。如果您希望每次将活动带回到前台时都更新文本,则可以使用onStart()onRestart()甚至onResume()。显然,如果您希望更频繁地更新文本(例如,每次数据库更改时),您都需要做更精细的事情。

答案 1 :(得分:1)

我建议在片段支持库中使用laoders。此示例显示如何使用加载器(使用HC API中的加载器)从联系人DB加载游标并在获得第一个结果时更新列表适配器并更新:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentListCursorLoader.html

使用它来填写你自己的数据基本上是一样的,但是当你把光标拿回来时,不是在适配器中设置它,你只需要拉出你想要的数据并在你的字段中设置它。

关于如何获得这些支持库版本的文章:

http://android-developers.blogspot.com/2011/03/fragments-for-all.html

我强烈建议将此作为从游标和其他来源加载数据的首选现代方法。它确保您以最佳方式执行操作,为您提供很多帮助:它以异步方式执行查询,因此您的UI不会阻止等待它,它会监视数据以进行更改并为您提供一种干净的方式当存在更改时从新游标更新,它负责与活动生命周期集成,当活动被销毁时,它会跨活动实例传播先前的数据,并且由于配置更改而创建新实例等。

相关问题