2012-07-17 97 views
2

我正在創建圖庫。 我有gridlayout顯示所有圖像。 現在我想要做到這一點,當我們選擇一個圖像,然後另一個意圖將開始,我已經做了,但現在我想顯示在這個新的意圖選定的圖像。從gridview中選擇圖像並將其顯示在其他意圖上

thanx提前。

+0

請看我的答案。 – 2012-07-17 09:17:26

回答

2

請使用下面的GridView的代碼來獲取意圖。

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" /> 

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return mThumbIds.length; 
    } 

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

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

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(Constants.mThumbIds[position]); 
     return imageView; 
    } 
} 

Constants.java

public class Constants { 
    // references to our images 
    private Integer[] mThumbIds = { 
      R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7, 
      R.drawable.sample_0, R.drawable.sample_1, 
      R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7, 
      R.drawable.sample_0, R.drawable.sample_1, 
      R.drawable.sample_2, R.drawable.sample_3, 
      R.drawable.sample_4, R.drawable.sample_5, 
      R.drawable.sample_6, R.drawable.sample_7 
    }; 
} 

MainActivity.java

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this)); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       Intentt mInDisplay=new Intent(MainActivity.this, DisplayActivity.class); 
       mInDisplay.putExtra("Index", position); 
       startActivity(mInDisplay); 
      } 
     }); 
    } 
} 

display.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <ImageView 
     android:id="@+id/mImgView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</RelativeLayout> 

DisplayActivity.java

public class DisplayActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Bundle bdl=getIntent().getExtras(); 
     int index=bdl.getInt("Index");  
     ImageView mImage = (ImageView) findViewById(R.id.mImgView1); 
     mImage.setImageResource(Constants.mThumbIds[index]); 
    } 
} 

,並宣佈活動都在您的Android清單文件。

+0

這項工作很好,但4後顯示它會產生錯誤,logcat說07-17 17:37:24.399:E/AndroidRuntime(881):java.lang.OutOfMemoryError:位圖大小超過虛擬機預算 – vinay 2012-07-17 12:07:55

+0

@vinay打開時打開第一個活動第二次活動,並完成第一次活動時的第二次活動。 – 2012-07-17 12:20:23

+0

thanx是有幫助的。 – vinay 2012-07-17 12:38:56

0

您可以通過setOnClickListener在每個圖像上設置點擊偵聽器,然後偵聽器可以發送意圖來啓動新的活動。

我們還希望發送具有意圖的圖像路徑。要達到此目的,您可以根據自己的意願使用putExtra ,並選擇您選擇的名稱作爲第一個參數,並將圖像路徑作爲第二個參數。

然後,您應該可以在新活動中使用getStringExtra來檢索圖像路徑。您需要在您的活動

好運調用getIntent()

相關問題