0

I'm trying to call a method on an object I'm accessing from an array. For some reason, the only methods I can call are methods of the Object class. Help? Here is my code:

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()));

The problem is that I can't call the getMemberThumbnailId on my currentMember object.

Strangely enough, I can get it to work if I do

myClassMembers[position].getThumbnailId();

instead of

ClassMember currentMember = myClassMembers[position];
currentMember.getThumbnailId();
4

2 に答える 2

0

ClassMember currentMember をキャストすると、必要なメソッドにアクセスできるようになります。

アクセスしているオブジェクトの配列が正しいタイプであることを確認する必要があります。必要に応じて、最初に確認してください。

if (currentMember instanceof ClassMember) { 
((ClassMember)currentMember).getMemberThumbnailId();

}

于 2013-09-27T14:45:10.163 に答える
0

配列をどのように宣言しましたか? 次のように宣言しましたか。

ClassMember myClassMembers = new ClassMember[anInt];

または、次のように宣言しましたか。

Object myClassMembers = new Object[anInt];

2 番目のオプションを選択した場合は、オブジェクトを元の型 ( ClassMember) にキャストする必要があります。例えば

ClassMember currentMember = (ClassMember) myClassMembers[position];

ClassMember別の要因として、アレイ自体にインスタンスを追加した方法が考えられます。

于 2013-09-27T14:45:20.733 に答える