2011-05-04 4 views
0

Je rencontre un problème de défilement avec une ListActivity. Voici la mise en page:List ListActivity ne défilera pas

<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> 

Et voici mon 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);     
      } 
     }); 

    } 
} 

Comme vous pouvez le voir, je veux tout le contenu de la page, sauf l'en-tête soit déroulable. Je l'ai fait avec succès dans les non-ListActivities. Cependant, dans cette mise en page, cela ne me permet pas de faire défiler la page du tout. Je suis en train de mettre à jour la liste onResume parce que les données peuvent être mises à jour dans des sous-activités; Quoi qu'il en soit, déplacer cela vers onCreate ne semble pas faire la différence.
Lorsque je supprime le ScrollView, il me permet de faire défiler uniquement la partie ListView de la mise en page. Mais je veux faire défiler toute la page. Des recommandations?

Répondre

Questions connexes