Java 解释在SetonicClickListener中处理对象的逻辑

Java 解释在SetonicClickListener中处理对象的逻辑,java,android,onitemclicklistener,Java,Android,Onitemclicklistener,请看以下代码: listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { word word = words.get(position);

请看以下代码:

 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);
        }
    });
}
这是“单词”列表:

 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));
final ArrayList words=new ArrayList();
加上(新词(“父亲”,“父亲”,R.drawable.familyәu father,R.raw.familyәu father”);
添加(新词(“母亲”、“ә”)ṭa“,R.drawable.family(母亲,R.raw.family(母亲));
添加(新词(“儿子”,“angsi”,R.drawable.family_-son,R.raw.family_-son));
添加(新词(“女儿”,“曲调”,R.drawable.family_-Dair,R.raw.family_-Dair));
添加(新词(“哥哥”,“塔奇”,R.drawable.family_older_brother,R.raw.family_older_brother”);
加上(新词(“弟弟”,“查利蒂”,R.drawable.family_Yourly_brother,R.raw.family_Yourly_brother));
添加(新词(“姐姐”、“特”)ṭe“,R.drawable.family(妹妹,R.raw.family(姐姐));
添加(新词(“ounger sister”、“kolliti”、R.drawable.family_Your_sister、R.raw.family_Your_sister”);
添加(新词(“祖母”、“ama”、R.drawable.family_Granger、R.raw.family_Granger”);
添加(新词(“祖父”,“帕帕”,R.drawable.family_祖父,R.raw.family_祖父));
“位置”是被单击的列表项的位置。就像你点击了“母亲”项目。。。位置将为1,从0开始

.get(position)是ArrayList的方法。。它根据位置返回arraylist的特定项


是的,您可以这样保存word对象。

word是ArrayList,它与ListView关联,因此当调用onItemClicked时,您在ListView中占据项目的位置。因此,如果您想获取与位置上的ListView项关联的特定对象,可以调用ArrayList的get()方法。现在您有了word对象,它与位于位置的列表项相关联。

位置是您正在单击的项的适配器中视图数组中的索引。get()方法只是从数组返回该视图

可以引用视图的某些部分,并将其值保存为字符串、对象等

什么是“位置”

间接回答-思考一下单击侦听器的用途。你在点击什么-一个项目。它需要知道你点击了哪个项目。因此,
位置

什么是“.get()”方法

这似乎是你自己的答案
words
是一个数组列表。如何从Arraylist中“获取”项目

无论哪种情况,JavaDoc都可以回答这两个问题

我们可以将它们保存在word对象中吗

什么是“他们”?您将获得一个
word
对象的实例,但变量名也恰好是
word


保住这个职位?我不建议这样做。当同一个对象可能位于另一个列表中的某个不同位置时,将单词的位置存储在一个列表中有什么好处

word
是一种引用类型。ArrayList word包含对多个word对象的引用。
words.get(position)
返回对该索引处ArrayList中word对象的引用,从0开始。
word-word=words.get(position)
引用ArrayList
words
中位置处的单词,并将其分配给
word
,以便
word
现在“指向”ArrayList中的对象。

在这行代码中:

word word = words.get(position);
“位置”是指列表中单击的位置。您可以看到它作为int参数传递到函数中:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){
get()方法很可能是Java的List get方法,它返回列表中给定索引处的项:



为了把它们放在一起,这一行的意思是“根据int'position'从单击的ArrayList'words'中给我'word'对象”




注意事项:另一个编码注意事项是,通常使用诸如“Word”之类的开头大写字母来命名类,而不是“Word”。这将避免混淆什么是类和什么是变量。

关于最后一部分,那么为什么我们对“Word”使用“等号”对象?你在word对象中说的。那不是那行代码所做的。它只是从列表中获取一个word对象。这部分:“word=”。再解释一下这部分。在对象中存储位置?如何存储?第一个
word
是引用类型(类名),对于第二个
word
,它只是变量名,可以命名为任何其他名称。基本上,您应该能够回答自己
int x=0;
是如何工作的,并将其应用于任何其他变量赋值。如果不是,我建议您学习更多关于Java和变量如何工作的知识。我想您可能会对该类感到困惑名称应始终以大写字母开头。欢迎访问SO。本网站不是用来替代的。也不是用来学习编程课程或教程的地方。@Rotwang好的。我知道了,对不起。谢谢
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {