如何在android中的原始文件夹中列出项目?

时间:2014-08-07 09:20:25

标签: android listview

如何列出android中raw文件夹中的项目?我已将原始文件夹中的项目添加到ListView,但ID显示在ListView而不是mp3文件中。

代码:

public class Listview extends ListActivity {

      public static ArrayList<Integer> list1 = new ArrayList<Integer>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Uri uri=Uri.parse("android.resource://" + getPackageName() + "/" +2131034112);
        Log.i("uri", ""+uri);

        int aInt=R.raw.a;
        int bInt=R.raw.b;
        int gInt=R.raw.g;

        String aString=Integer.toString(aInt);

        Log.i("aString", ""+aString);

         list1.add(aInt);
            list1.add(bInt);
            list1.add(gInt);

            setListAdapter(new ArrayAdapter<Integer>(this, R.layout.listview,list1));

        ListView listView = getListView();

        Log.i("value", ""+list1);

        /*listView.setAdapter(adapter)*/
        listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                 String product = ((TextView) view).getText().toString();

                  int [] resID= {R.raw.a,R.raw.b,R.raw.g};
                MediaPlayer mediaPlayer=MediaPlayer.create(Listview.this,resID[position]);

                  mediaPlayer.start();
                  Intent intent = new Intent (Listview.this,PlaySoloActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);
                       list1.clear();

            }
        });

    }


    }

结果输出:

2131034112
2131034113
2131034114

期望的输出:

a.mp3
b.mp3
g.mp3

任何人都可以帮我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法获取原始目录中的所有资源名称。唯一的缺点是它只返回没有扩展名的名称,但是如果你的所有文件都有相同的扩展名,你知道你可以添加它。

private String[] getAllRawResources() {
    Field fields[] = R.raw.class.getDeclaredFields() ;
    String[] names = new String[fields.length] ;

    try {
        for( int i=0; i< fields.length; i++ ) {
            Field f = fields[i] ;
            names[i] = f.getName();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return names ;
}