2017-01-02 11 views
0

- このアプリはRecyclerView の画像を表示します - すべての項目に対して1つしか再生されず、終了するとスキップします次の音 - 私は私のアダプターのコードがAndroid Recyclerviewの画像の画像

public class MyAdapter extends RecyclerView.Adapter { 

private static MediaPlayer mySound; 

private ArrayList<Article> mArticles = new ArrayList<>(); 
public RecyclerView mRecyclerView; 

private class MyViewHolder extends RecyclerView.ViewHolder { 

    public ImageView mTitle; 

    public MyViewHolder(View pItem) { 
     super(pItem); 

     mTitle = (ImageView) pItem.findViewById(R.id.imageView); 
    } 
} 

public MyAdapter(ArrayList<Article> pArticles, RecyclerView pRecyclerView) { 
    mArticles = pArticles; 
    mRecyclerView = pRecyclerView; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) { 
      View view = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.article_layout_allcats, viewGroup, false); 

     view.setOnClickListener(new View.OnClickListener() { 
     @Override 
    public void onClick(View v) { 
      mySound = MediaPlayer.create(v.getContext(), Article.getSounds()); 
      mySound.start(); 
     } 
    }); 

    return new MyViewHolder(view); 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int i) { 
    // uzupełniamy layout artykułu 
    Article article = mArticles.get(i); 
    ((MyViewHolder) viewHolder).mTitle.setImageResource(article.getTitle()); 
} 

@Override 
public int getItemCount() { 
    return mArticles.size(); 

} 

そして

public class Article { 
private int mTitle; 
public static int mSounds; 

private static int[] sTitles = { 
PAWEL int[] sTitles ={ 
     R.drawable.photo1, 
     ... 
     R.drawable.photo10 
}; 

public static int[] sSounds = { 
     R.raw.sound1, 
     ... 
     R.raw.sound10 

     }; 

public Article() { 

    Random random = new Random(); 

    mTitle = sTitles[random.nextInt(sTitles.length)]; 
    mSounds = sSounds[random.nextInt(sSounds.length)]; 
} 
public int getTitle() { 
    return mTitle; 

} 
public static int getSounds() { 
    return mSounds; 

} 
} 
あり、ユーザ

によってクリックされたそれぞれの写真に異なるサウンドを再生したいです

答えて

0

setOnClickListeneronCreateViewHolderにある可能性があります。

public View view; 
public MyViewHolder(View pItem) { 
     super(pItem); 

     this.view=pItem; 
     .... 
    } 

2.今すぐviewにクリックリスナを追加します。行のルートビューを取得するために

1.変更MyViewHolder

使用onBindViewHolder方法はRecyclerViewの行全体のためsetOnClickListenerを取得しますin onBindViewHolder

View rowView=((MyViewHolder)viewHolder).view; 
rowView.setTag(article.getSounds()); // set sound it here 
view.setOnClickListener(new View.OnClickListener() { 
     @Override 
    public void onClick(View v) { 
      mySound = MediaPlayer.create(v.getContext(), 
        (Integer.parseInt(v.getTag().toString()))); 
      mySound.start(); 
     } 
}); 
+0

返事ありがとうございますが、私にとってはうまくいかなかった。 – Pawel

+0

@パベル:問題解決済みですか? –