我是新來的機器人,甚至編程它只有3周 我想通過顯示圖片和播放爲我的德語課建立一個應用程序音頻。 現在我的問題,我有一個列表視圖,其中顯示一個小的圖片和一個字,然後我做了一個onItemClickListener這個列表視圖,它顯示項目形式和arraylist類型字(一個類的構造和獲取方法對於圖像資源和音頻資源和單詞它自己的字符串)如何迭代通過自定義ArrayList移動到下一個項目,當點擊一個按鈕
無論如何,我管理項目點擊項目列表時,它打開彈出式佈局,顯示圖像和播放按鈕。
然後,我想添加next和prev按鈕去下一個圖像和音頻,而不是關閉彈出窗口,再次點擊想要的項目但沒有運氣。
我會嘗試發佈相關的最重要的代碼
public class Lesson1Words extends AppCompatActivity {
private MediaPlayer mMediaPlayer;
private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
// Now that the sound file has finished playing, release the media player resources.
releaseMediaPlayer();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.word_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ArrayList<Word> lessone1Words = new ArrayList<>();
lessone1Words.add(new Word("vernünftig", R.drawable.vernunftig, R.raw.l01_vernunftig));
lessone1Words.add(new Word("großzügig", R.drawable.groszugig, R.raw.l01_grosszugig));
lessone1Words.add(new Word("fair", R.drawable.fair, R.raw.l01_fair));
lessone1Words.add(new Word("intelligent/klug", R.drawable.intelligent, R.raw.l01_intelligent));
lessone1Words.add(new Word("frech", R.drawable.frech, R.raw.l01_frech));
lessone1Words.add(new Word("kreativ", R.drawable.kreaiv, R.raw.l01_kreativ));
lessone1Words.add(new Word("sparsam", R.drawable.sparsam, R.raw.l01_sparsam));
lessone1Words.add(new Word("realistisch", R.drawable.realistisch, R.raw.l01_realistisch));
lessone1Words.add(new Word("hübsch", R.drawable.hubsch, R.raw.l01_hubsch));
lessone1Words.add(new Word("aufmerksam", R.drawable.aufmerksam, R.raw.l01_aufmerksam));
final WordAdapter adapter = new WordAdapter(this, lessone1Words, R.color.lesson_color);
final ListView listView = (ListView) findViewById(R.id.word_list);
assert listView != null;
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, final View view, final int position, long l) {
final Word word = lessone1Words.get(position);
//open Popup layout for the image but still can't iterate through the arraylist
LayoutInflater layoutInflater
= (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup, null);
final PopupWindow popupWindow = new PopupWindow(
popupView,
AppBarLayout.LayoutParams.WRAP_CONTENT,
AppBarLayout.LayoutParams.WRAP_CONTENT);
// when touch outside the Popup layout it dismiss it
popupWindow.setFocusable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
//change image in ImageView of Popup.xml to current image in the array
final ImageView imageBig = (ImageView) popupView.findViewById(R.id.popimage);
imageBig.setImageResource(word.getImageResourceId());
ImageView playSound = (ImageView) popupView.findViewById(R.id.play_image);
playSound.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//responsible for the playback of the audio according to the arraylist index
releaseMediaPlayer();
mMediaPlayer = MediaPlayer.create(Lesson1Words.this, word.getAudioResourceId());
mMediaPlayer.setVolume(0.5f, 0.5f);
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(mCompletionListener);
}
});
popupWindow.showAtLocation(listView, Gravity.CENTER, 0, 0);
ImageView nextImage = (ImageView) popupView.findViewById(R.id.next_image);
nextImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// cant go for the nextimage or audio
}
});
}
});.
}
}
你可以關閉當前的彈出窗口,並使用來自該窗口的位置參數爲下一個/上一個項目創建一個新的彈出窗口onItemClickListener。 –
請發表您試用過的內容,因爲它聽起來像是獲得(位置+ 1)和設置新圖像的簡單電話應該可以工作。 – lionscribe
@lionscribe我試過這個詞word1 = lessone1Words.get(position + 1); imageBig.setImageResource(word1.getImageResourceId()); //但它只用於下一個圖像,但它不會繼續 –