问题
I want to add a button in ListView
to play sound. The problem is the IDE (in List.java) cannot resolve this method
mediaPlayer.create(this,R.raw.people);
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);
}
}
The 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;
}
}
回答1:
The method signature is MediaPlayer create (Context context, int resid)
View.OnClickListener
is not a Context
, which is what this
is in that case. BaseAdapter
is also not a Context
.
You can declare it in the adapter using MediaPlayer.create(List.this.context, R.raw.people)
来源:https://stackoverflow.com/questions/38646830/how-can-i-use-button-to-play-a-sound-with-listview