2016-02-15 6 views
0

Попытка заставить MediaPlayer работать с ListView, однако, похоже, что он не воспроизводится, когда я нажимаю элемент в ListView. Не уверен, что я делаю неправильно. Любая помощь будет большой. Своего нового к этому жаль, если это очевидно.MediaPlayer Listview onItemClick не играет

public class soundboard2 extends AppCompatActivity implements AbsListView.OnScrollListener { 

private int lastTopValue = 0; 

private ImageView backgroundImage; 
private ArrayAdapter adapter; 
private String[] mFragmentTitles; 
private ListView mDrawerList; 

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

    final MediaPlayer sound01 = MediaPlayer.create(this, R.raw.sound01); 

    mDrawerList = (ListView)findViewById(R.id.list); 
    mFragmentTitles = getResources().getStringArray(R.array.fragments); 


    adapter = new ArrayAdapter(this, R.layout.list_row, mFragmentTitles); 
    mDrawerList.setAdapter(adapter); 
    // inflate custom header and attach it to the list 
    LayoutInflater inflater = getLayoutInflater(); 
    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.custom_header, mDrawerList, false); 
    mDrawerList.addHeaderView(header, null, false); 

    // we take the background image and button reference from the header 
    backgroundImage = (ImageView) header.findViewById(R.id.listHeaderImage); 
    mDrawerList.setOnScrollListener(this); 

      mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView a, View v, int position, long id) { 
      if (mDrawerList.getItemAtPosition(position)=="Player") { 
       try { 
        sound01.prepare(); 
       } catch (IllegalStateException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       sound01.start(); 
       sound01.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        public void onCompletion(MediaPlayer mp) { 
         mp.release(); 
        } 
       }); 
      } 
     } 
    }); 
    @Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 

} 

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
    Rect rect = new Rect(); 
    backgroundImage.getLocalVisibleRect(rect); 
    if (lastTopValue != rect.top) { 
     lastTopValue = rect.top; 
     backgroundImage.setY((float) (rect.top/2.0)); 
    } 
} 

} 

Струны

<string-array name="fragments"> 
    <item>Player</item> 
    <item>two</item> 
    <item>three</item> 
     </string-array> 
+0

Проверьте состояние 'if'. Подробнее о сравнении строк [здесь] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java). – Voicu

+0

Да, я определенно считаю, что это связано с условием if, но не уверен, как исправить это, даже посмотрев на это. Любая помощь? – user2407147

ответ

0

Там может быть много вещей происходит неправильно, но я укажу две вещи:

Вы должны prepare ваши средства массовой информации, прежде чем он может быть запущен , Вероятно, вы не хотите дожидаться последней секунды, чтобы создать и подготовить носитель перед его воспроизведением.

Вы создаете MediaPlayer в своем onCreate, но ничего не делаете с ним.

Возможно, вместо этого воспользуйтесь SoundPool, который более подходит для более коротких клипов, которые необходимо быстро воспроизводить в ответ на события.

+0

Итак, я изменил его, поэтому я использую MediaPlayer из onCreate, но он все равно не воспроизводится. На самом деле хотите использовать MediaPlayer. – user2407147

+0

Я также не знаю, носит ли СМИ что-то, что можно воспроизвести MediaPlayer. Вы также можете проверить матрицу совместимости носителей. http://developer.android.com/guide/appendix/media-formats.html –

+0

Это определенно так, как я использовал его в аналогичном приложении с MediaPlay, который использовал кнопки вместо listview. – user2407147

Смежные вопросы