将项目添加到ListView Android

时间:2014-05-18 16:26:44

标签: java android xml android-listview

我有一个应用程序可以从存储设备中获取所有.mp3文件,我想在创建应用程序时将它们添加到ListView。我在列表中添加项目时迷失了方向。我用谷歌搜索了它,我不能很好地定义开发用途以及为什么要添加它们添加的内容。我希望有人告诉我如何将项目添加到ListView中,如果可以的话,还可以解释他们正在做什么,因此我理解并从中学习。我是一个新的Android Dev,希望尽可能多地学习,而不仅仅是修复我的代码。

所以,我目前的代码是......

XML

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ListView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

我不知道该怎么做我的主要活动。我到目前为止......

File storageDir = new File("/mnt/extSdCard/");

ArrayList<String> listItems=new ArrayList<String>();

ArrayAdapter<String> adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    walkdir(storageDir);

}

public void walkdir(File directory) {
    TextView songList=(TextView)findViewById(R.id.textView);

    String fileType = ".mp3";

    File[] listFile = directory.listFiles();

    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {
                walkdir(listFile[i]);
            } else {
                if (listFile[i].getName().endsWith(fileType)){

                    //I need to add the items to the ListView right here.
                    //listFile[i].toString() is the code to get the text, aka what i want to add


                }
            }
        }
    }    }

3 个答案:

答案 0 :(得分:1)

首先,在您的活动中,您应该扩展ListActivity而不是Activity。这将允许您访问名为setListAdapter的方法(还有其他方法,但这可能是最简单的方法)。

setListAdapter方法以适配器作为参数,因此我们现在需要创建一个可以传递它的适配器。

为此,请写下以下内容:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
                                                        android.R.layout.simple_list_item_1,
                                                        listFile);

我会稍微打破一下:

  • 第一部分(this)是我们传递上下文的地方。
  • 第二部分是表示每个列表项的布局文件。为了节省我们必须创建一个,我们正在使用Android内置的一个。
  • 最后,我们需要传递你想要它显示的单词(在你的情况下,一个字符串数组,虽然它也可以是一个字符串的ArrayList。

一旦你完成了,我们只需要将适配器传递给我们的setListAdapter方法,就像这样

setListAdapter(adapter);

但在运行代码之前,我们需要在XML文件中添加一行。当你扩展ListActivity时,Android会寻找一个id为android.R.id.list的列表,所以我们需要像这样设置id:

<ListView     
    android:id="@android:id/list" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ListView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

答案 1 :(得分:0)

在获取mp3文件名后初始化列表适配器。

adapter = new ArrayAdapter(yourContext,android.R.layout.simple_list_item_1,yourFileNameList);

查看您的代码,您正在尝试将mp3文件转换为字符串并在listview中显示。你可以只显示文件名。

答案 2 :(得分:0)

您需要为自己构建的自定义列表视图设置适配器。 转到youtube并按Slidenerd搜索视频。他有Android的所有基础教程。 listview教程从#77开始。