0

ここに画像の説明を入力してください リストアダプタを使用して画像ビューの配列を表示します。プログラムで動的にIDを設定します。問題は、アダプターを右にスクロールすると、画像が画面に表示されたときにのみIDを取得することです。もう一度左にスクロールすると、前の画像のIDが新しい値にリセットされます。このような動作を停止し、アクティビティの開始時にすべての画像のIDを設定するにはどうすればよいですか?

動作は図のようになります。古い画像は、アクティビティ画面に表示されるたびに新しいIDを取得するため、古いIDを介して画像にアクセスする際に問題が発生します。私の画像アダプタコード:

public View getView(final int position, View convertView,ViewGroup parent) 
    {
        final ImageView i = new ImageView(thView.getView().getContext());
        Bitmap bm;
        try {
            bm = thView.getBitmapFromAsset(lis.get(position));
            bm = Bitmap.createScaledBitmap(bm, 100, 100, false);
        } catch (IOException e) {
            e.printStackTrace();
            bm=null;
        }
        i.setImageBitmap(bm);
        final RelativeLayout borderImg = new RelativeLayout(thView.getView().getContext());

        i.setId(x);
        Log.w("ID set as",""+x);
        i.setTag(IMAGEVIEW_TAG);
        x++;
        borderImg.addView(i);           
         i.setOnLongClickListener(new OnLongClickListener() {
            public boolean onLongClick(View v) {
                fname = lis.get(position);
                ClipData.Item item = new ClipData.Item((CharSequence) v
                        .getTag());
                dragData = new ClipData(
                        (CharSequence) v.getTag(),
                        new String[] { ClipDescription.MIMETYPE_TEXT_PLAIN },
                        item);

                View.DragShadowBuilder myShadow = new MyDragShadowBuilder(i);
                v.startDrag(dragData, myShadow, null, 0);
                return false;
            }
         });
         myDragEventListener mDragListen = new myDragEventListener();
         i.setOnDragListener(mDragListen);
        return borderImg;
    }
}
4

1 に答える 1

1

とはx? 立場によるならx、いつも持ってるからそっちを使わない?

AdapterView が何を意味するのかを実際に理解せずに、やりたいことを実行することはできません。また、最初にすべてのイメージ ビューをレンダリングすると、メモリ不足の問題が発生する可能性があります。

本当の問題は、ID で何を達成しようとしているのかということだと思います。

于 2012-11-22T17:24:48.917 に答える