2013-08-01 58 views
1

我STUCK。應用程序相當簡單,但我無法讓我的大腦爲此工作。我只想按下ListView項目播放聲音。這可能很簡單,但我不想隨意放置聲音。聲音應放在確切的ListView項目位置上。在這裏我有什麼現在:單擊ListView項目播放聲音

MainActivity.java:

package com.moomob.despicablemesounds; 

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import ca.demo.demolistview.complex.R; 

public class MainActivity extends Activity { 
    private List<Minions> myMinions = new ArrayList<Minions>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     populateMinionsList(); 
     populateListView(); 
     registerClickCallback(); 
    } 

    private void populateMinionsList() { 
     myMinions.add(new Minions("Assemble the Minions", R.drawable.min1)); 
     myMinions.add(new Minions("Banana Minions", R.drawable.min2)); 
     .................. 
      .................. 
    } 

    private void populateListView() { 
     ArrayAdapter<Minions> adapter = new MyListAdapter(); 
     ListView list = (ListView) findViewById(R.id.minListView); 
     list.setAdapter(adapter); 
    } 

    private void registerClickCallback() { 
     ListView list = (ListView) findViewById(R.id.minListView); 
     list.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View viewClicked, 
        int position, long id) { 
          // Don't know what I should write in here 
      } 
     }); 
    } 

    private class MyListAdapter extends ArrayAdapter<Minions> { 
     public MyListAdapter() { 
      super(MainActivity.this, R.layout.item_view, myMinions); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // Make sure we have a view to work with (may have been given null) 
      View itemView = convertView; 
      if (itemView == null) { 
       itemView = getLayoutInflater().inflate(R.layout.item_view, 
         parent, false); 
      } 

      // Find the minion to work with. 
      Minions currentCar = myMinions.get(position); 

      // Fill the view 
      ImageView imageView = (ImageView) itemView 
        .findViewById(R.id.item_icon); 
      imageView.setImageResource(currentCar.getIconID()); 

      // Make: 
      TextView makeText = (TextView) itemView 
        .findViewById(R.id.item_txtMake); 
      makeText.setText(currentCar.getMake()); 

      return itemView; 
     } 
    } 
} 

Minions.java(只是爲了建立我的構造函數和getter和setter):

package com.moomob.despicablemesounds; 

public class Minions { 
    private String make; 
    private int iconID; 

    public Minions(String make, int iconID) { 
     super(); 
     this.make = make; 
     this.iconID = iconID; 
    } 

    public String getMake() { 
     return make; 
    } 

    public int getIconID() { 
     return iconID; 
    } 

    public void setMake(String make) { 
     this.make = make; 
    } 

    public void setIconID(int iconID) { 
     this.iconID = iconID; 
    } 

} 

也許我需要某種形式的的SoundAdapter,但不知道。希望有人會明白我想要什麼,因爲我absolutelly這一個:(

回答

2

卡住你播放聲音是這樣的:

mp = MediaPlayer.create(Test.this, R.raw.mysound); 
mp.setOnCompletionListener(new OnCompletionListener() { 

    @Override 
    public void onCompletion(MediaPlayer mp) { 
      mp.release(); 
    } 

}); 
mp.start(); 

但是你還需要知道哪些聲音blongs哪個奴才,所以海外商品會有將屬性添加到您的奴才類。

在你的onclick處理你的位置點擊,你可以得到的點擊僕從。

+0

感謝您的答覆,但要公平,我不明白這一點。我在我的OnItemClickListener中創建了我的MediaPlayer對象像這樣 - > mp = MediaPlayer.create(MainActivity.this,R.raw.assembletheminions);但是當我嘗試編寫mp.setOnCompletionListener .......我得到錯誤「MediaPlayer類型中的方法setOnCompletionListener(MediaPlayer.OnCompletionListener)不適用於參數(new OnCompletionListener(){})」 –

+0

我得到我目前的位置是這樣的: 「Minions clickedMinion = myMinions.get(position);」 –

+0

你確定你已經實現了正確的OnCompletionListener嗎?檢查你是否導入了MediaPlayer.OnCompletionListener而不是另一個OnCompletionListener,eclipse有時會這樣做。 –