【发布时间】: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