自从使用Android以来,我很好奇我如何让Android在方向更改(布局与布局 - 土地)方面做一切。
目前,我必须向游标适配器提供正确数量的db列和视图。这是正确的方式还是我错过了什么?你们是怎么做到的?
请查看两个SimpleCursorAdapter,其中我提供两个现有布局的相同布局名称(布局中有布局,布局布局中有布局名称)。唯一的区别是额外的db列“type”和附加视图“R.id.activities_row_text3”。
这是正确的方法吗?
Cursor cursor;
SimpleCursorAdapter simpleCursorAdapter = null;
if ((cursor = db.fetchActivities(connection)) != null) {
startManagingCursor(cursor);
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
simpleCursorAdapter = new SimpleCursorAdapter(
this,
R.layout.activities_row,
cursor,
new String[] {
"name",
"time" },
new int[] {
R.id.activities_row_text1,
R.id.activities_row_text2 });
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
simpleCursorAdapter = new SimpleCursorAdapter(
this,
R.layout.activities_row,
cursor,
new String[] {
"name",
"time",
"type" },
new int[] {
R.id.activities_row_text1,
R.id.activities_row_text2,
R.id.activities_row_text3 });
}
if (simpleCursorAdapter != null) {
setListAdapter(simpleCursorAdapter);
}
}
答案 0 :(得分:0)
在启动Activity时,最好只创建一次simpleCursorAdapter
。然后,您可以在更改方向发生时使用方法SimpleCursorAdapter.changeCursorAndColumns()
(或bindView()
)。您可能需要使列表无效以查看更改(notifyDataSetInvalidated()
)。
要避免在发生方向更改时重新启动活动,请参阅Handling orientation changes yourself