проблема просмотра макета - PullRequest
1 голос
/ 11 января 2011

Мне нужен такой макет, чтобы пользователь мог переключаться между просмотром списка и просмотром карты и нажатием кнопки меню. Когда действие создается впервые, оно получает данные с сервера и выводит список результатов, а при нажатии кнопки меню отображает все результаты в просмотре карты. Проблема, с которой я сталкиваюсь, - это отображение экрана загрузки вначале и снова после того, как пользователь нажмет кнопку обновления меню результатов. Мой макет ниже, активность расширяет MapActivity. Я ожидаю, что представление загрузки исчезнет, ​​когда данные списка станут доступны, когда вызывается notifyDataSetInvalidated (). Я использовал подобную логику в других действиях без просмотра карты, и действие расширяет списки активности, и это работает, но не в этом случае.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:orientation="vertical"
    >
    <LinearLayout 
        android:id="@+id/data_view"
        android:layout_width="fill_parent"
        android:layout_height="0dip" 
        android:layout_weight="1"
        >
        <ListView 
            android:id="@android:id/list"
            android:layout_height="fill_parent" 
            android:layout_width="fill_parent"
            android:drawSelectorOnTop="false"
            android:scrollbars="vertical" 
            />
        <com.google.android.maps.MapView
            android:id="@+id/map_view"
            android:layout_height="fill_parent" 
            android:layout_width="fill_parent"
            android:clickable="true" 
            android:visibility="gone"
            android:apiKey="@string/google_maps_api_key"
            />
    </LinearLayout> 
    <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:gravity="center"
      android:background="@color/white"
      >
      <ProgressBar
        android:id="@+id/emptyProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="6dip"
        style="?android:attr/progressBarStyleSmall" 
        />
      <TextView
        android:id="@+id/emptyText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/loading" 
        />
    </LinearLayout>
</LinearLayout>

1 Ответ

1 голос
/ 11 января 2011

Я решил использовать FrameLayout и переключаться между этими 3 видами в зависимости от того, что отображать.

...