Java 为什么getItem(position)与新实例一起工作?(不应该是零?)
我正在尝试学习java,我阅读了有关强制转换、实例化对象、数组、哈希映射等方面的内容。 我一直在为Android编写代码,我做得很好,直到我发现自己有了这个:Java 为什么getItem(position)与新实例一起工作?(不应该是零?),java,android,casting,android-listfragment,Java,Android,Casting,Android Listfragment,我正在尝试学习java,我阅读了有关强制转换、实例化对象、数组、哈希映射等方面的内容。 我一直在为Android编写代码,我做得很好,直到我发现自己有了这个: MyObject instObject = (MyObject)getItem(position); 从我目前所学到的。。。我正在instObject中创建MyObject的一个新实例,因此,我认为该值应该为零。 但是,当我调用setText(…)时,它就工作了=o 请尽量不要总结答案,因为到目前为止,我很难理解这一点 我会说西班牙
MyObject instObject = (MyObject)getItem(position);
从我目前所学到的。。。我正在instObject中创建MyObject的一个新实例,因此,我认为该值应该为零。
但是,当我调用setText(…)
时,它就工作了=o
请尽量不要总结答案,因为到目前为止,我很难理解这一点我会说西班牙语,我懂一点英语,但不是很好
public class MyClass extends ListFragment {
List<MyObject> instObject; //instObject = 0
...
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
instObject = new ArrayList<MyObject>();
MyObject item = ...
instObject.add(item); //instObject = items
}
//Adapter{
...
@Override
public View getView(int position, View view, ViewGroup parent) {
MyObject instObject = (MyObject)getItem(position);
//instObject = ? (should not be zero?)
holder.title.setText( instObject.getTitle() );
// why return the corresponding title?
}
}
public class MyObject {
vars...
constructor...
setters...
getters...
}
}
然后,获取如下内容:
item = instObject.getItem(position); //well I'm newbie! :P
myView.setText(item.getTitle());
第三名:我忽略了getItem()方法的以下内容:
@Override
public Object getItem(int position) {
return instObject.get(position);
}
在getView()之前,“instObject”包含所有项,但随后包含:
MyObject instObject = (MyObject)getItem(position);
在技术语言中,我认为可能是这样:我在特定位置引用“instObject” 没有技术支持…
我创建了一个object类型的变量,具有相同的名称,并且只设置了“instObject”的所有项中的一项
我想我明白了,再次感谢!:)这取决于适配器中的
getItem()
方法的作用。但一般来说,当您执行getItem()
操作时,适配器会从创建适配器时传递给适配器的集合中返回对该特定位置的对象的引用
从我目前所学到的。。。我正在instObject中创建MyObject的一个新实例,因此,我认为该值应该为零。但是,当我调用setText(…)时,它工作了=o
在Java中,使用new
操作符创建一个新的对象/实例,如下所示:
Employee employee = new Employee();
对
getItem()
的调用将返回对先前存在的对象的引用。基本上,在“幕后”的某个地方,已经创建了一个新对象,getItem()只返回对它的引用。然后将该引用存储在instObject中。我不完全理解这个问题。但是“MyObject instObject=(MyObject)getItem(position);”不会创建新对象,而是返回与您先前添加的对象相同的对象。@naveejr:它将返回对此对象的引用(与其他信息一样)