【问题标题】:Array Adapter not working correctly阵列适配器无法正常工作
【发布时间】:2014-05-19 03:52:15
【问题描述】:

我有一个要添加曲目列表的数组!这很简单,但我的ListViewArrayAdapter 无法正常工作。我试过移动setAdapterAdapter 的实际声明,但它不起作用。澄清一下,它有效,但我得到了大约 800 次相同的歌曲。我已经测试了获取标题名称的过程并且它可以工作,但是 ListView 有问题

代码:

ListView songList = (ListView) findViewById(R.id.ListView);

TextView Test = (TextView) findViewById(R.id.textView2);

String fileType = ".mp3";

String[] myFile = new String[800];

File[] listFile = directory.listFiles();

adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, myFile);

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

    if (listFile[i].isDirectory()) {
        walkdir(listFile[i]);
    } else {
        if (listFile[i].getName().endsWith(fileType)) {
            myFile[i] = listFile[i].getName().toString();
        }
    }
        songList.setAdapter(adapter);
}

【问题讨论】:

  • 它重复了“大约 800 次”,因为您将数组的大小硬编码为 800。

标签: java android arrays xml


【解决方案1】:

尝试使用 ArrayList 代替 String[800]:

ArrayList<String> myFile = new ArrayList<String>;

File[] listFile = directory.listFiles();

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

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

}

adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, myFile);

songList.setAdapter(adapter);

【讨论】:

  • 我在new ArrayList&lt;String&gt;; @geet 的末尾得到expected ( or [
  • 当我这样做时,我的ListView 变为空。
  • 所以,这可能是条件问题。
  • 我发现了问题。这是因为ArrayList 被多次定义并导致它被清除。我解决问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2017-05-22
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多