【问题标题】:Add items to ListView Android将项目添加到 ListView Android
【发布时间】:2014-05-18 16:26:44
【问题描述】:

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

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

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


                }
            }
        }
    }    }

【问题讨论】:

  • 您只需填写一个适配器并将其分配给 ListView...

标签: java android xml android-listview


【解决方案1】:

首先,在您的 Activity 中,您应该扩展 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:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 1970-01-01
        • 2017-05-31
        相关资源
        最近更新 更多