MediaPlayer,在位置上创建项目

时间:2014-07-07 18:40:24

标签: android listview position

我正在使用ListView和MediaPlayer开发一个项目。我希望在原始文件夹中包含类似列表或声音数组的内容,并将它们分配到某个位置 list1file在listview中的位置0,position2file在listview中的位置1等等...所以当用户点击例如位置3时,MediaPlayer创建位于第4位的文件并播放它。 我创建了整数

int[] songPos = {R.raw.position1,R.raw.position2,R.raw.position3,R.raw.position4};

和mp

public static MediaPlayer mp = new MediaPlayer();

我尝试了这个:

list.setOnItemClickListener(new OnItemClickListener() {

           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               String selectedItemPos = (String) getItemAtPosition(position);
               int resId = getResources().getIdentifier(selectedItemPos, songPos, UnitPackage);
               MediaPlayer mp = MediaPlayer.create(CentralActivity.this, resId);  

               mp.start();
           }
           });

但我收到了错误:

The method getItemAtPosition(int) is undefined for the type new AdapterView.OnItemClickListener(){}

The method getIdentifier(String, String, String) in the type Resources is not applicable for the arguments (String, int[], String)

我相信这些错误是愚蠢的,很容易修复,但由于我还是相当新的开发,我不知道如何修复它们。所以我的问题是:我该如何解决这个问题?或者这是做我想做的正确方法吗?

3 个答案:

答案 0 :(得分:3)

这样做:

int[] songPos = {R.raw.position1,R.raw.position2,R.raw.position3,R.raw.position4};
    list.setOnItemClickListener(new OnItemClickListener() {

               @Override
               public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                   int resId = songPos[position];
                   MediaPlayer mp = MediaPlayer.create(CentralActivity.this, resId);  

                   mp.start();
               }
               });

答案 1 :(得分:0)

getItemAtPosition返回Object类型(参见定义here)我认为您需要将对象强制转换为字符串。

String selectedItemPos = (String) getItemAtPosition(position);

答案 2 :(得分:0)

使用

Context context = getContext(); // or getBaseContext(), or getApplicationContext()
int resId = getResources().getIdentifier("raw/song_name", null, context.getPackageName());

这里song_name是RAW文件夹中命名的文件..

声明名为的文件的字符串[]。

int resId = getResources().getIdentifier("raw/"+str_arr[position], null, context.getPackageName());