Сложный ListActivity не будет прокручиваться - PullRequest
0 голосов
/ 04 мая 2011

У меня проблема с прокруткой в ​​ListActivity.Вот макет:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  style="@style/DefaultBackground" 
  android:orientation="vertical">

    <include layout="@layout/default_header" />

    <ScrollView android:layout_height="fill_parent" android:layout_width="fill_parent"
      android:fillViewport="true">
        <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
          android:orientation="vertical">   

            <LinearLayout style="@style/RoundedCornerContainer" android:orientation="vertical">

                <TextView android:text="@string/is_anyone_injured" style="@style/DefaultText.RoundedContainerImmediateChild" />
                <Button android:id="@+id/accident_help_call_911_btn" android:text="@string/call_911" 
                  style="@style/BaseButton.Large" />                      
                <View style="@style/LandingPageChoiceDivider" />

                <TextView android:text="@string/review_accident_checklist" style="@style/DefaultText.RoundedContainerImmediateChild" />
                <Button android:id="@+id/accident_help_checklist_btn" android:text="@string/checklist" 
                  style="@style/BaseButton.Large" />                      
                <View style="@style/LandingPageChoiceDivider" />

                <TextView android:text="@string/collect_accident_info" style="@style/DefaultText.RoundedContainerImmediateChild" />
                <Button android:id="@+id/accident_help_add_accident_btn" android:text="@string/add_new_accident" 
                  style="@style/BaseButton.Large" />

            </LinearLayout>

            <LinearLayout style="@style/RoundedCornerContainer" android:orientation="vertical">
                <TextView android:text="@string/previous_accidents" style="@style/LabelValueTitle" />
                <View style="@style/LandingPageChoiceDivider" />

                <ListView android:id="@id/android:list" android:layout_width="fill_parent" 
                  android:layout_height="fill_parent" android:drawSelectorOnTop="false" />

                <TextView android:id="@id/android:empty"  android:layout_width="fill_parent" 
                  android:layout_height="fill_parent" android:text="@string/no_previous_claims_found" />                    

            </LinearLayout>         
        </LinearLayout>
    </ScrollView>

</LinearLayout>

А вот мой ListActivity:

public class AccidentHelp extends BaseListActivity {

    private static final String TAG = "AccidentHelp";

    private PreviousClaimAdapter previousClaimsAdapter;
    private List<AccidentInfo> previousClaimList = new ArrayList<AccidentInfo>();   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.v(TAG, "onCreate called");
        super.onCreate(savedInstanceState);

        setContentView(R.layout.accident_help);
            // code for setting up button OnClickListeners here.
    }

    @Override
    public void onResume() {
        super.onResume();
        setupPreviousClaimsAdapter();
    }

    private void setupPreviousClaimsAdapter() {

        AccidentInfoDB db = new AccidentInfoDB(getApplicationContext());

        previousClaimList = db.read(currentUser.getUserName());
        //there were no previous accidents.
        if (previousClaimList == null) {
            return;
        }
        previousClaimsAdapter = new PreviousClaimAdapter(this, R.layout.previous_claim_row, previousClaimList);

        setListAdapter(previousClaimsAdapter);
        getListView().setSelector(R.drawable.landing_choice_selector);
        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.v(TAG, "previous claim selected.");

                AccidentInfo accidentInfo = (AccidentInfo)getListAdapter().getItem(position);
                Intent intent = new Intent(AccidentHelp.this, ClaimLandingPage.class);
                intent.putExtra(ClaimLandingPage.CLAIM_LANDING_PAGE_ACCIDENT_INFO_EXTRA_NAME, accidentInfo);
                startActivity(intent);                  
            }
        });

    }
}

Как видите, я хочу, чтобы все содержимое страницы, кроме заголовка, можно было прокручивать.Я успешно сделал это в не ListActivities.Тем не менее, в этом макете, это не позволяет мне прокручивать страницу вообще.

Я обновляю список на Resume, потому что данные могут обновляться в подзадачах;несмотря на это, перемещение в onCreate, похоже, не имеет значения.
Когда я удаляю ScrollView, это позволяет мне прокручивать только часть ListView макета.Но я хочу прокрутить всю страницу.Любые рекомендации?

1 Ответ

0 голосов
/ 04 мая 2011

ListView не должен находиться внутри ScrollView.См. Ответ на , как я могу автоматически изменять размер списка, чтобы он не прокручивался .Вместо этого я динамически добавляю детей к пустому LinearLayout в макете.

...