2013-06-20 2 views
1

Я борется с тем, чтобы ListView мог прокручивать. Насколько я читал, должно быть хорошо, чтобы ListView внутри LinearLayout, так почему же он не прокручивается?Почему мой ListView с ArrayAdapter не прокручивается?

Это расположение

<FrameLayout 
    android:id="@android:id/tabcontent" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:id="@+id/tab2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <ListView 
      android:id="@+id/listView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

     </ListView> 

    </LinearLayout> 

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

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


</FrameLayout> 

А вот где я заполнить его с вещами ..

File folder = new File(Environment.getExternalStorageDirectory().getPath()+"/Download/"); 
File[] listOfFiles = folder.listFiles(); 
ArrayAdapter<String> arrayadp = new ArrayAdapter<String>(this, R.layout.list_files); 

for (File file : listOfFiles) { 
    if (file.isFile()) { 
     String extension = ""; 
     String filename = file.getName(); 
     int i = filename.lastIndexOf('.'); 
     if (i > 0) { 
      extension = filename.substring(i+1); 
     }    
     if(extension.equalsIgnoreCase("wav")){ 
      arrayadp.add(filename); 
     } 
    } 
} 
ListView listView = (ListView) findViewById(R.id.listView1); 
listView.setAdapter(arrayadp); 

ответ

0

Атрибут orientation необходим для LinearLayout. Вам нужно установить это либо horizontal, либо vertical, даже если у LinearLayout только один ребенок. Я думаю, что это может быть причиной вашей проблемы; Я забыл ориентацию много раз, и это может вызвать множество странных проблем с тем, как ваши Представления отображаются и ведут себя. Вы также можете рассмотреть возможность использования FrameLayout в качестве корневого представления здесь, поскольку наличие FrameLayout с несколькими детьми может затруднить их правильное раскладывание. Рассмотрим LinearLayout, если вы хотите, чтобы ваши трое детей были в горизонтальном или вертикальном ряду.

0

это нормально, чтобы положить listview в linearLayout.

Неверно установить высоту listView как wrap_content, так как listView содержит много элементов, все из которых имеют динамический размер и число.

google об этом говорил на this lecture. пожалуйста, смотрите все. это может помочь вам и с другими вещами.

0

Эта проблема, потому что ваш корневой макет является FrameLayout.

Вставьте LinearLayout, насколько корень

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
<FrameLayout 
    android:id="@android:id/tabcontent" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:id="@+id/tab2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <ListView 
      android:id="@+id/listView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

     </ListView> 

    </LinearLayout> 

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

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


</FrameLayout> 
</LinearLayout>