我正在尝试学习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中的特定位置返回对该对象的引用。

08-06 20:34