2016-07-28 26 views
0

Ich möchte eine Schaltfläche in ListView hinzufügen, um Sound zu spielen. Das Problem ist der IDE (in List.java) kann dieses Verfahren nicht lösen mediaPlayer.create(this,R.raw.people);Wie kann ich die Taste verwenden, um einen Sound mit ListView abzuspielen?

The MainActivity.java Code

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ArrayList<String> list = new ArrayList<String>(); 
     list.add("item1"); 


     //instantiate custom adapter 
     List adapter = new List(list, this); 

     //handle listview and assign adapter 
     ListView lView = (ListView)findViewById(R.id.listView); 
     lView.setAdapter(adapter); 
    } 
} 

Der List.java Code:

public class List extends BaseAdapter implements ListAdapter { 
    private ArrayList<String> list = new ArrayList<String>(); 
    private Context context; 
    MediaPlayer mediaPlayer; 


    public List(ArrayList<String> list, Context context) { 
     this.list = list; 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int pos) { 
     return list.get(pos); 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     if (view == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.activity_list, null); 
     } 

     //Handle TextView and display string from your list 
     TextView listItemText = (TextView)view.findViewById(R.id.list_item_string); 
     listItemText.setText(list.get(position)); 

     //Handle buttons and add onClickListeners 

     Button addBtn = (Button)view.findViewById(R.id.add_btn); 


     addBtn.setOnClickListener(new View.OnClickListener(){ 


      @Override 
      public void onClick(View v) { 
        mediaPlayer.create(this,R.raw.people); 
         mediaPlayer.start(); 
       notifyDataSetChanged(); 
      } 
     }); 

     return view; 
    } 
} 
+0

Haben Sie eine andere Mediaplayer-Klasse importieren? –

+0

Ich importiere nur Import android.media.MediaPlayer; und ich initialisiere den MediaPlayer und es hat immer noch den gleichen Fehler – abdelrhman

Antwort

0

Die Methodensignatur lautet MediaPlayer create (Context context, int resid)

View.OnClickListener ist kein Context, was this in diesem Fall ist. BaseAdapter ist auch kein Context.

Sie können es in den Adapter erklären mit MediaPlayer.create(List.this.context, R.raw.people)

+0

Vielen Dank es funktioniert aber der Sound wird nicht abgespielt. Ich habe versucht, MediaPlayer.Perpare() zu verwenden; drinnen und fangen Block, aber es funktioniert immer noch nicht – abdelrhman

+0

Nicht sicher, was Sie sagen, außer zu überprüfen, dass Ihre Sound-Datei nicht beschädigt ist. Da diese Antwort das Problem in der Frage gelöst hat, können Sie es akzeptieren und einen anderen Beitrag veröffentlichen. –

+0

OK.Vielen Dank für Ihre Hilfe. – abdelrhman