2016-12-20 11 views
0

У меня есть список, содержащий текст и изображение, этот просмотр изображений реализует onClickListener() для воспроизведения некоторых носителей, когда пользователь нажимает на изображение, воспроизводящее воспроизведение аудиофайла, и кнопку воспроизведения изображения, чтобы перейти на паузу, пока это что он работает так хорошо для меня, но когда я прокручиваю вниз до последнего элемента в списке, кнопка паузы возвращается к умолчанию (кнопка воспроизведения), и звуковой файл продолжает играть. Почему это происходит? спасибоИзменение изображения в списке во время прокрутки

//--------------- Play Button ------------------------------------------------------------------- 
    b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      //--------------determine the id to play ---------------------------------- 
      idd = items.get(position).getId(); 
      FilteringNums f = new FilteringNums(); 
      f.convert(idd); 
      String attribute = f.r; 
      //------------------------------------------------------------------------- 
       int resourceId = arg0.getResources().getIdentifier(attribute+position, "raw", activity.getPackageName()); 
       final MediaPlayer Mp =MediaPlayer.create(getContext(), resourceId); 
      try{   
       int r = Mp.getCurrentPosition(); 
       Mp.seekTo(r); 
       Mp.start();     

      b.setEnabled(false); 
      b.setVisibility(b.INVISIBLE); 
      pause.setVisibility(pause.VISIBLE); 
    //------------------------------------------------------------------------------------------------ 

      //-------------- Pause Button --------------------------------------------------------- 
      pause.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 

        if(Mp.isPlaying()) 
        { 
        Mp.pause(); 
        Log.d("media player", "is paused"); 
        resume.setVisibility(resume.VISIBLE); 
        stop.setVisibility(stop.VISIBLE); 
        } 
       } 
       }); 
+0

Вы используете адаптер? Если да, добавьте код. как метод 'getView()'. –

+0

Используйте ViewHolder в классе Adapter для хранения текущего представления во время прокрутки списка. – Shane

+0

Да, я использую ViewHolder, но проблема все еще там !! –

ответ

0

этого viewHolder

static class ViewHolder { 
    public TextView tv_id ; 
    public ImageView b; 
    public ImageView pause; 
    public ImageView resume; 
    public ImageView stop; 
} 

и это реализация его

final ViewHolder holder = new ViewHolder(); 
    holder.tv_id= (TextView) convertView.findViewById(R.id.sora_id); 

    holder.b= (ImageView) convertView.findViewById(R.id.list_item_btn); 
    holder.pause= (ImageView) convertView.findViewById(R.id.pause_item_btn); 
    holder.resume= (ImageView) convertView.findViewById(R.id.resume_item_btn); 
    holder.stop= (ImageView) convertView.findViewById(R.id.stop_item_btn); 
    if (position % 2 == 0) 
     holder.tv_id.setText("سورة"+" "+items.get(position).getSora().toString()); 
    else 
     holder.tv_id.setText(items.get(position).getSora().toString()); 
    holder.tv_id.setTextColor(colors2[colorPos2]); 
    holder.tv_id.setTypeface(null, Typeface.BOLD); 
    holder.b.setBackgroundResource(R.drawable.speaker); 
    holder.pause.setBackgroundResource(R.drawable.pause); 
    holder.resume.setBackgroundResource(R.drawable.play); 
    holder.stop.setBackgroundResource(R.drawable.stop);