请查看以下代码:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
word word = words.get(position);
mMediaPlayer = MediaPlayer.create(FamilyActivity.this, word.getAudioResourceId());
mMediaPlayer.start();
//*************Releasing resources
mMediaPlayer.setOnCompletionListener(mCompletionListener);
}
});
}
它属于Listview 单击该ListView中的行时,此方法会截取单击并播放该项目的相应歌曲。
在第四行中,您会看到以下代码:word word = words.get(position);
请问您能解释一下这段特定的代码吗?
PS:有关更多详细信息,我将向您展示“单词”类以及“单词”ArrayList,以防您需要查看它:
public class word {
//////Atributes
private String mDefaultTranslation;
private String mMiwokTranslation;
private int mImageResourceId=NO_IMAGE_PROVIDED;
private static final int NO_IMAGE_PROVIDED=-1;
private int mAudioResourceId;
//Constructor
public word(String defaultTranslation,String miwokTranslation,int audioResourceId){
mDefaultTranslation=defaultTranslation;
mMiwokTranslation=miwokTranslation;
mAudioResourceId=audioResourceId;
}
public word(String defaultTranslation,String miwokTranslation,int ImageResourceId,int audioResourceId){
mDefaultTranslation=defaultTranslation;
mMiwokTranslation=miwokTranslation;
mImageResourceId=ImageResourceId;
mAudioResourceId=audioResourceId;
}
//Getters
public String getDefaultTranslation(){
return mDefaultTranslation;
}
public String getMiwokTranslation(){
return mMiwokTranslation;
}
public int getImageResourceId(){return mImageResourceId;}
public boolean hasImage(){return mImageResourceId != NO_IMAGE_PROVIDED;}
public int getAudioResourceId(){return mAudioResourceId;}
这是“词汇”arraylist:
final ArrayList<word> words = new ArrayList<word>();
words.add(new word("father", "әpә", R.drawable.family_father, R.raw.family_father));
words.add(new word("mother", "әṭa", R.drawable.family_mother, R.raw.family_mother));
words.add(new word("son", "angsi", R.drawable.family_son, R.raw.family_son));
words.add(new word("daughter", "tune", R.drawable.family_daughter, R.raw.family_daughter));
words.add(new word("older brother", "taachi", R.drawable.family_older_brother, R.raw.family_older_brother));
words.add(new word("younger brother", "chalitti", R.drawable.family_younger_brother, R.raw.family_younger_brother));
words.add(new word("older sister", "teṭe", R.drawable.family_younger_sister, R.raw.family_older_sister));
words.add(new word("ounger sister", "kolliti", R.drawable.family_younger_sister, R.raw.family_younger_sister));
words.add(new word("grandmother", "ama", R.drawable.family_grandmother, R.raw.family_grandmother));
words.add(new word("grandfather", "paapa", R.drawable.family_grandfather, R.raw.family_grandfather));
答案 0 :(得分:0)
“位置”是单击列表项的位置。就像你点击“母亲”项目...位置将是1,它从0开始。
.get(position)是ArrayList的方法..它根据位置返回arraylist的特定项。
是的,您可以像这样保存单词对象。
答案 1 :(得分:0)
单词是ArrayList,它与ListView相关联,因此当调用onItemClicked时,您可以在ListView中获取项目的位置。因此,如果要获取与位置上的ListView项相关联的特定对象,则调用ArrayList的 get ()方法。您现在有单词对象,该对象与位置位置的列表项相关联。
答案 2 :(得分:0)
Position是您单击的项目的适配器中的视图数组中的索引。 get()方法只返回数组中的那个视图。
您可以引用视图的某些部分并将其值保存为字符串,对象等
答案 3 :(得分:0)
什么是“职位”?
间接答案 - 考虑点击监听器的目的。你点击什么 - 一个项目。它需要知道您点击的哪个项目。因此,position
什么是“.get()”方法?
这似乎是你自己回答的。 words
是一个Arraylist。你怎么从Arraylist“获得”一个项目?
在任何一种情况下,JavaDoc都可以回答这两个问题
我们可以将它们保存在单词对象中吗?
什么是“他们”?您 获取word
对象的实例,但变量名也恰好是word
。
保存位置?我不建议这样做。当同一个对象可以在另一个列表中,在某个不同的位置时,将该单词的位置存储在一个列表中会有什么用呢?
答案 4 :(得分:0)
word
是参考类型。 ArrayList单词包含对多个单词对象的引用。
words.get(position)
从0开始返回该索引处ArrayList中单词对象的引用。
word word = words.get(position)
引用ArrayList words
中位置处的单词并将其分配给word
,以便word
现在指向&#39;到ArrayList中的对象。
答案 5 :(得分:0)
在这行代码中:
word word = words.get(position);
“position”是指单击列表中的位置。您可以看到它作为int参数传递给函数:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
get()方法很可能是Java的List get方法,它返回给定索引的列表中的项: Java List javadoc
要将它们组合在一起,这一行就是说“根据int'位置',点击”ArrayList'中的''对象''对象'“
注意:另一个编码注释,通常的做法是使用开头大写字母命名类,如“Word”而不是“word”。这样可以避免在什么是类和什么是变量之间产生混淆。