2012-07-17 5 views

답변

2

이있는 gridview의 코드를 아래에 사용하십시오 활동

행운을 빕니다에 getIntent()를 호출하여 의도를 얻을해야합니다.

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]); 
    } 
} 

그리고 당신의 안드로이드 매니페스트 파일에 모두 활동을 선언합니다.

+0

이 작업은 훌륭하지만 .4 오류가 발생하면 logcat에서 07-17 17 : 37 : 24.399 : E/AndroidRuntime (881) : java.lang.OutOfMemoryError : 비트 맵 크기가 VM 예산을 초과 함 – vinay

+0

@vinay 열 때 첫 번째 작업 완료 두 번째 활동을 시작하고 두 번째 활동을 마친다. –

+0

고맙습니다. – vinay

0

setOnClickListener을 통해 모든 이미지에 클릭 수신기를 설정할 수 있습니다. 그러면 청취자는 새로운 활동을 시작하기위한 의도를 보낼 수 있습니다.

또한 이미지 경로를 의도와 함께 보내려고합니다. 이를 달성하려면 putExtra 을 첫 번째 매개 변수로 선택한 이름과 두 번째 매개 변수로 선택한 이미지 이름으로 사용하십시오.

그러면 새 작업에서 getStringExtra을 사용하여 이미지 경로를 다시 검색 할 수 있습니다. 당신은

관련 문제