我正在尝试学习Java,我了解了有关转换,实例化对象,数组,HashMaps等的信息。
我当时正在为Android编写代码,但直到发现自己与此相关之前,我一直表现不错:
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...
}
}
解决了谢谢!!! :)
我有三个困惑...
第一:
我认为,如果在“ onActivityCreated”内部创建“ instObject”,则无法从适配器内部访问此“ instObject”。 (我们不能)
适配器内部的“ instObject”为零,但是...
我忘记了在构造函数的适配器“ instObject”内部,再次获得在“ onActivityCreated”中创建的项目。 (抱歉)
第二:
我认为这样可能会得到这样的东西:
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()
时,适配器将从创建适配器时传递给适配器的Collection中的特定位置返回对该对象的引用。