Я создаю очень простое ядровое приложение. Я использую GridView, который содержит элементы (представление звука). Элемент состоит из ImageView и TextViewКак получить позицию позиции на клике, установленном в классе адаптера?
У меня проблема в моем адаптере. Вот код:
public class SoundAdapter extends ArrayAdapter<Sound>{
private Sound[] items;
private Context context = null;
public SoundAdapter(Context context, int textViewResourceId, Sound[] items) {
super(context, textViewResourceId, items);
this.items = items;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
SoundHolder holder = null;
if (row == null) {
LayoutInflater vi = ((Activity)context).getLayoutInflater();
row = vi.inflate(R.layout.list_row, null);
holder = new SoundHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.icon);
holder.txtDescription = (TextView)row.findViewById(R.id.description);
row.setTag(holder);
//Here is the clickListener I want
}else {
holder = (SoundHolder)convertView.getTag();
}
Sound sound = items[position];
if(sound != null){
holder.txtDescription.setText(sound.getDescription());
holder.imgIcon.setImageResource(R.drawable.muscle1);
}
return row;
}
static class SoundHolder
{
ImageView imgIcon;
TextView txtDescription;
}
}
В настоящее время у меня есть onItemClickListener на моем GridView в моем основных, которые создают новый объект MediaPlayer, связанный с щелкнутым пунктом. Таким образом, событие щелчка для всех пункта (TextView + ImageView)
То, что я хочу сделать, это clickListener только на ImageView в GetView() метод, где я ставлю комментарий строку:
holder.imgIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//create the MediaPlayer object
//start the media player
}
});
Но с этим решением я не могу получить доступ к позиции элемента внутри clickListener. Поэтому я не могу получить доступ к правильному звуку. (Мне нужно положение, чтобы получить звук и создать объект MediaPlayer)
У вас есть идея, как добиться чего-то подобного?
Заранее спасибо.
'Но с этим решением я не могу получить доступ к позиции item' подхода является правильным, дайте мне знаете, какая проблема связана с использованием текущего кода? –
Внутри clickListener я не могу получить доступ к параметру позиции метода getView(), поэтому я не могу получить звук, связанный с этим изображением (каждый звук имеет одинаковое изображение в ImageView по умолчанию), и я не могу создайте MediaPlayer следующим образом: 'MediaPlayer.create (context, mSounds [position] .getSoundResourceId());' потому что я не могу выполнить mSounds [position]. – Mtoypc