2012-11-22 28 views
0

enter image description here 我使用列表適配器顯示圖像視圖的數組。我動態地在程序中設置它們的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; 
    } 
} 
+0

我不確定活動如何左右滾動。你可以讓它更簡單或包含屏幕截圖或代碼。 –

+1

發佈您的適配器代碼。 – dmon

+0

@Saifuddin我的圖像適配器的基本工作。 – Andro

回答

1

什麼是x?如果x取決於位置,那麼爲什麼不使用它,因爲你總是擁有它?

你無法做到自己想要的東西而沒有真正瞭解AdapterView的含義。另外,如果您在開始時渲染所有圖像視圖,則可能會遇到內存不足問題。

我想真正的問題是你想用ID來完成什麼?

相關問題