我正在尝试在我正从数组访问的对象上调用方法。出于某种原因,我可以调用的唯一方法是Object类的方法。救命?这是我的代码:
listItem = findViewById(myResourceId);
TextView itemTextView = ((TextView)listItem.findViewById(R.id.list_item_text));
ImageView itemImageView = ((ImageView)listItem.findViewById(R.id.list_item_thumbnail));
ClassMember currentMember = myClassMembers[position];
itemImageView.setImageResource(getResources().getIdentifier(currentMember.getMemberThumbnailId()));
问题是我无法在currentMember对象上调用getMemberThumbnailId。
奇怪的是,如果我这样做,我可以让它发挥作用
myClassMembers[position].getThumbnailId();
而不是
ClassMember currentMember = myClassMembers[position];
currentMember.getThumbnailId();
答案 0 :(得分:0)
如果您投射ClassMember currentMember,那么您应该能够访问所需的方法。
您只需要确保您访问的对象数组的类型正确。如果需要,请先检查一下。
if (currentMember instanceof ClassMember) {
((ClassMember)currentMember).getMemberThumbnailId();
}
答案 1 :(得分:0)
你是如何宣布你的阵列的?你有没有宣布:
ClassMember myClassMembers = new ClassMember[anInt];
或者您将其声明为:
Object myClassMembers = new Object[anInt];
如果您选择了第二个选项,则必须将对象强制转换为原始类型(ClassMember
)。 e.g。
ClassMember currentMember = (ClassMember) myClassMembers[position];
另一个因素可能是您如何将ClassMember
实例添加到数组本身。