2011-08-22 87 views
2

我正在嘗試將整數數組傳遞給baseadapter,以便A.class將整數數組傳遞給B.class中的BaseAdapter。這裏是我想過去的整數數組的A.class(發件人):將整數傳遞給BaseAdapter

int [] mThumb = { 
        R.drawable.image1_thumb, R.drawable.image2_thumb, R.drawable.image3_thumb, 
        R.drawable.image4_thumb, R.drawable.image5_thumb, R.drawable.image6_thumb, 
        R.drawable.image7_thumb, R.drawable.image8_thumb, R.drawable.image9_thumb, 
        R.drawable.image10_thumb}; 


     Bundle b=new Bundle(); 
     b.putIntArray("mThumbSent", mThumb); 
     Intent startSwitcher = new Intent(A.this, B.class); 
     startSwitcher.putExtras(b); 

而且在我的活動B BaseAdapter:

public class ImageSwitch1 extends Activity Extends ...{ 
onCreate.... 
[redacted] 
} 

private ImageSwitcher mSwitcher; 


public class ImageAdapter extends BaseAdapter { 

    Bundle b=this.getIntent().getExtras(); 
    int[] mThumb = b.getIntArray("mThumbSent"); 

    public ImageAdapter(Context c) { 

     mContext = c; 
    } 

    public int getCount() { 

    return mThumb.length; //this used to say return mThumbIds 

    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     ImageView im = new ImageView(mContext); 
     im.setImageResource(mThumb[position]); 
     im.setAdjustViewBounds(true); 
     im.setLayoutParams(new Gallery.LayoutParams(
     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     im.setBackgroundResource(R.drawable.picture_frame); 


     return im; 
    } 

    private Context mContext; 

} 
} 

現在顯然上面的代碼不正確,我不能用圖像適配器中的getintent。但是這是我想要實現的一個說明性示例,並且想知道如果可能,如何通過意圖將變量或數組傳遞給BaseAdapter。

回答

1

更新您的ImageAdapter的構造函數接受一個整數數組,像這樣:

int[] mResources; 

public ImageAdapter(Context c, int[] resources) { 
    mResources = resources; 
    mContext = c; 
} 

然後在你的活動初始化適配器時,只需將它傳遞額外的int數組:

ImageAdapter adapter = new ImageAdapter(context, intArray); 
+0

真棒謝謝你!你剛剛救了一天 – benbeel

2

getIntent ()將在您的類B中提供。

您可以將Bundle或整數數組放入ImageAdapter的構造函數中

public class ImageAdapter extends BaseAdapter { 

    public ImageAdapter(Context c, Bundle b) { 
     int[] mThumb = b.getIntArray("mThumbSent"); 
     mContext = c; 
    } 

    ..... 
} 

在你的活動B構建你的適配器是這樣的:

ImageAdapter adapter = new ImageAdapter(yourcontext,getIntent().getExtras()); 

要使用您的適配器在哪裏?在ListView中?然後,繼承ListAdapter而不是BaseAdapter就足夠了。