复杂的ListActivity不会滚动

时间:2011-05-04 16:09:05

标签: java android android-listview android-scrollview

我遇到了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中成功完成了这项工作。但是,在此布局中,它根本不允许我滚动页面。

我正在更新onResume列表,因为数据可以在子活动中更新;无论如何,将其移至onCreate似乎没有什么区别 当我删除ScrollView时,它允许我只滚动布局的ListView部分。但我想滚动整个页面。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

ListView并不意味着在ScrollView中。请参阅how can i automatically size listview so it doesn't scroll的答案。我正在动态地将子项添加到布局中的空LinearLayout。