布局方向更改而没有活动交互

时间:2010-10-21 14:03:07

标签: android layout orientation

自从使用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);
    }
}

1 个答案:

答案 0 :(得分:0)

在启动Activity时,最好只创建一次simpleCursorAdapter。然后,您可以在更改方向发生时使用方法SimpleCursorAdapter.changeCursorAndColumns()(或bindView())。您可能需要使列表无效以查看更改(notifyDataSetInvalidated())。

要避免在发生方向更改时重新启动活动,请参阅Handling orientation changes yourself