【问题标题】:Display Media files in ListView, NullPointerException?在 ListView 中显示媒体文件,NullPointerException?
【发布时间】:2014-03-13 00:34:30
【问题描述】:

MainActivity

public class MainActivity extends Activity 
{

/** Called when the activity is first created. */
private List<String> myList;
File file;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    Log.i("MEDIA", "A");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log.i("MEDIA", "B");
    ListView listView = (ListView) findViewById(R.id.listView1);
    myList = new ArrayList<String>();

    Log.i("MEDIA", "C");
    File directory = Environment.getExternalStorageDirectory();
    file = new File(directory + "/Test");
    File list[] = file.listFiles();

    Log.i("MEDIA", "D");
    //for (int i = 0; i < list.length; i++)
    for (int i = 0; i < 5; i++)
    {
        Log.i("MEDIA", "D1"); //CRASHES HERE
        //myList.add(list[i].getName());
        myList.add(list[i].getName());
        Log.i("MEDIA", "D2");
    }

    Log.i("MEDIA", "E");
    final StableArrayAdapter adapter = new StableArrayAdapter(this,android.R.layout.simple_list_item_1, myList);
    listView.setAdapter(adapter); 
    // Set all the file in the list.
}

private class StableArrayAdapter extends ArrayAdapter<String> 
  {

    HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();

    public StableArrayAdapter(Context context, int textViewResourceId,List<String> objects) 
    {
      super(context, textViewResourceId, objects);
      for (int i = 0; i < objects.size(); ++i) 
      {
        mIdMap.put(objects.get(i), i);
      }
    }

    @Override
    public long getItemId(int position) 
    {
      String item = getItem(position);
      return mIdMap.get(item);
    }

    @Override
    public boolean hasStableIds() 
    {
      return true;
    }

  }
}

日志:http://pastebin.com/WWmqKKvQ

我在 SO 上选择了这个问题的答案: How to show audio files in a listview in Android?

并且也尝试过这个教程: http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

【问题讨论】:

  • 这是 GoogleDev-Site 上的示例中提到的 ArrayAdapter 的一部分。如果我使用这里提到的答案,它会给出同样的错误:stackoverflow.com/a/9784844/2534694
  • 外部存储下是否存在Test Dir?
  • @Mobility 啊,是的!这就是prb所在的地方。我在 GalaxyTab 上测试它,路径是 /storage/emulated/0/ ;我要为此做出哪些改变?
  • 另外,我需要为此添加任何权限吗?
  • 您需要访问 AppManifest 文件中的外部存储的权限。然后getExternalStorageDir()就可以浏览到想要的目录了。

标签: android listview nullpointerexception android-mediaplayer


【解决方案1】:

问题是“/Test”目录不存在,所以我将它替换为“/Bluetooth”(这是一个存在的目录),现在它显示该文件夹中的文件列表。

问题解决了。 :D

    Log.i("MEDIA", "C");
    File directory = Environment.getExternalStorageDirectory();
    file = new File(directory+ "/Bluetooth");// + "/Test");
    File list[] = file.listFiles();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2020-04-12
    • 2021-08-21
    • 2018-08-27
    相关资源
    最近更新 更多