为什么带有ArrayAdapter的ListView不可滚动?

时间:2013-06-20 17:14:04

标签: android android-listview android-arrayadapter

我正在努力让ListView能够滚动。据我所知,在LinearLayout中有一个ListView应该没问题,为什么不滚动?

这是布局

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

3 个答案:

答案 0 :(得分:0)

orientation需要LinearLayout属性。即使horizontal只有一个孩子,您也需要将其设置为verticalLinearLayout。我想这可能是你问题的原因;我已经多次忘记了方向,它可能会导致你的视图显示和行为方式出现许多奇怪的问题。您可能还想考虑不在此处使用FrameLayout作为您的根视图,因为拥有多个子项的FrameLayout可能会使其难以正确布局。如果您希望您的三个孩子处于水平或垂直行,请考虑LinearLayout

答案 1 :(得分:0)

可以将listview放在linearLayout中。

将listView的高度设置为wrap_content是不行的,因为listView包含很多项目,都具有动态大小和数字。

谷歌已经在this lecture上讨论了这个问题。请仔细观察。它也可以帮助你解决其他问题。

答案 2 :(得分:0)

此问题是因为您的根布局是FrameLayout。

插入linearlayout root

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