Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么getItem(position)与新实例一起工作?(不应该是零?)_Java_Android_Casting_Android Listfragment - Fatal编程技术网

Java 为什么getItem(position)与新实例一起工作?(不应该是零?)

Java 为什么getItem(position)与新实例一起工作?(不应该是零?),java,android,casting,android-listfragment,Java,Android,Casting,Android Listfragment,我正在尝试学习java,我阅读了有关强制转换、实例化对象、数组、哈希映射等方面的内容。 我一直在为Android编写代码,我做得很好,直到我发现自己有了这个: MyObject instObject = (MyObject)getItem(position); 从我目前所学到的。。。我正在instObject中创建MyObject的一个新实例,因此,我认为该值应该为零。 但是,当我调用setText(…)时,它就工作了=o 请尽量不要总结答案,因为到目前为止,我很难理解这一点 我会说西班牙

我正在尝试学习java,我阅读了有关强制转换、实例化对象、数组、哈希映射等方面的内容。 我一直在为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...  
    }
}
然后,获取如下内容:

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:它将返回对此对象的引用(与其他信息一样)