アプリは Gridview に画像を表示します。GridView のアダプターで、使用可能なリソースからランダムに必要な画像の数を生成します。新しいInteger[] imageIDs
配列が作成され、それらのリソース ID がこの新しい配列に保存されます。また、この resourceID をImageView を拡張するArrayList
カスタム オブジェクトに格納したいと考えています。ImageSourceObject
を使用してimageViewを設定しましたimgObj.setImageResource(imageIDs[i])
。onTouch()
またはメソッドでこのオブジェクトを取得getView()
すると、imageView セットの同じリソースを取得することが期待されますが、-1 が取得されます。
setImageResource() を介して ImageSourceObject の ImageView を設定しているときに、ImageSourceObject の getId() を取得しようとすると、ImageView セットの ID を取得する必要があると思います。
コード :
private void createObjectsArray() {
int totalObjs = 15;
Integer[] mThumbIds = {
R.drawable.droid_1, R.drawable.droid_3,
R.drawable.droid_2, R.drawable.ic_launcher
};
// Create new [] for imageIDs to store the resource ID as generated
imageIds = new Integer[totalObjs];
// Create ArrayList of ImageSourceObject to set image & other proeprties
this.imgObjsArr = new ArrayList<ImageSourceObject>();
Random random = new Random();
int index;
// Set Targets
for (int i=0; i < totalObjs; i++) {
index = this.generateRandomNumber(0, (mThumbIds.length - 1), random);
imageIds[i] = mThumbIds[index];
ImageSourceObject iso = new ImageSourceObject(mContext);
iso.setImageResource(imageIds[i]);
imgObjsArr.add(iso);
Log.d("GA", "ThumbIDS ID : " + mThumbIds[index] + " ImageIDs : " + imageIds[i] + " ISO IMG ID : " + iso.getId());
}
}
このコードのログ:
02-19 12:21:38.780: D/GA(1613): ThumbIDS ID : 2130837557 ImageIDs : 2130837557 ISO IMG ID : -1
mThumbIDs
&imageIDs
値の ID が同じであることがわかります。しかしiso
、画像を設定した後のオブジェクトの場合も -1 ??
ImageSourceObject のコードは非常にシンプルです。
public class ImageSourceObject extends ImageView {
private boolean touched;
private boolean targetObj;
public ImageSourceObject(Context context) {
super(context);
setTouched(false);
setTargetObj(false);
}
.... Rest Getter & Setter methods
リソース ID が に設定されていない理由を教えてくださいImageSourceObject
。すべてのリソースで画像setImageResource
をImageView
保存してから設定しませんか???
どんな助けでも大歓迎です。
ありがとう