GridViewWIthSubActivityDemo
拥有一个sub-activity的GridView示例:
显示一系列图片,点击其中之一的话,在新的sub-activity中放大显示。
ImageAdapter是自定义的Adapter,继承自BaseAdapter,是GridView与待展示数据之间的桥梁。
ImageAdapter imageAdapter = new ImageAdapter(this);
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(imageAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), SingleViewActivity.class);
intent.putExtra("position", position);
startActivity(intent);
} });
position参数是被点击的图片在Adapter中的位置,Intent中携带数据应该是position,而不是id。
Intent intent = getIntent();
int position = intent.getExtras().getInt("position");
ImageAdapter imageAdapter = new ImageAdapter(this);
ImageView imageView = (ImageView) findViewById(R.id.imageview);
imageView.setImageResource(imageAdapter.mImageIds[position]);
通过Intent的Extras参数传递数据,putExtras() 和 getExtras().
1 package com.example.shad_fnst.gridviewwithsubactivitydemo; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.support.v7.app.ActionBarActivity; 6 import android.os.Bundle; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.View; 10 import android.widget.AdapterView; 11 import android.widget.GridView; 12 import android.widget.ImageView; 13 14 15 public class MainActivity extends Activity { 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 22 ImageAdapter imageAdapter = new ImageAdapter(this); 23 GridView gridView = (GridView) findViewById(R.id.gridview); 24 gridView.setAdapter(imageAdapter); 25 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 26 @Override 27 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 28 Intent intent = new Intent(getApplicationContext(), SingleViewActivity.class); 29 intent.putExtra("position", position); 30 startActivity(intent); 31 } 32 }); 33 } 34 35 @Override 36 public boolean onCreateOptionsMenu(Menu menu) { 37 // Inflate the menu; this adds items to the action bar if it is present. 38 getMenuInflater().inflate(R.menu.menu_main, menu); 39 return true; 40 } 41 42 @Override 43 public boolean onOptionsItemSelected(MenuItem item) { 44 // Handle action bar item clicks here. The action bar will 45 // automatically handle clicks on the Home/Up button, so long 46 // as you specify a parent activity in AndroidManifest.xml. 47 int id = item.getItemId(); 48 49 //noinspection SimplifiableIfStatement 50 if (id == R.id.action_settings) { 51 return true; 52 } 53 54 return super.onOptionsItemSelected(item); 55 } 56 }
1 package com.example.shad_fnst.gridviewwithsubactivitydemo; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.support.v7.app.ActionBarActivity; 6 import android.os.Bundle; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.widget.ImageView; 10 11 12 public class SingleViewActivity extends Activity { 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_single_view); 18 19 Intent intent = getIntent(); 20 int position = intent.getExtras().getInt("position"); 21 22 ImageAdapter imageAdapter = new ImageAdapter(this); 23 ImageView imageView = (ImageView) findViewById(R.id.imageview); 24 imageView.setImageResource(imageAdapter.mImageIds[position]); 25 } 26 27 @Override 28 public boolean onCreateOptionsMenu(Menu menu) { 29 // Inflate the menu; this adds items to the action bar if it is present. 30 getMenuInflater().inflate(R.menu.menu_single_view, menu); 31 return true; 32 } 33 34 @Override 35 public boolean onOptionsItemSelected(MenuItem item) { 36 // Handle action bar item clicks here. The action bar will 37 // automatically handle clicks on the Home/Up button, so long 38 // as you specify a parent activity in AndroidManifest.xml. 39 int id = item.getItemId(); 40 41 //noinspection SimplifiableIfStatement 42 if (id == R.id.action_settings) { 43 return true; 44 } 45 46 return super.onOptionsItemSelected(item); 47 } 48 }
1 package com.example.shad_fnst.gridviewwithsubactivitydemo; 2 3 import android.content.Context; 4 import android.view.View; 5 import android.view.ViewGroup; 6 import android.widget.BaseAdapter; 7 import android.widget.GridView; 8 import android.widget.ImageView; 9 10 /** 11 * Created by shad-fnst on 2015/08/04. 12 */ 13 public class ImageAdapter extends BaseAdapter{ 14 private Context mContext; 15 16 public Integer[] mImageIds = { 17 R.drawable.sample0, R.drawable.sample1, 18 R.drawable.sample2, R.drawable.sample3, 19 R.drawable.sample4, R.drawable.sample5, 20 R.drawable.sample6, R.drawable.sample7, 21 R.drawable.sample0, R.drawable.sample1, 22 R.drawable.sample2, R.drawable.sample3, 23 R.drawable.sample4, R.drawable.sample5, 24 R.drawable.sample6, R.drawable.sample7, 25 R.drawable.sample0, R.drawable.sample1, 26 R.drawable.sample2, R.drawable.sample3, 27 R.drawable.sample4, R.drawable.sample5, 28 R.drawable.sample6, R.drawable.sample7 29 }; 30 31 public ImageAdapter(Context context){ 32 mContext = context; 33 } 34 35 @Override 36 public int getCount() { 37 return mImageIds.length; 38 } 39 40 @Override 41 public View getView(int position, View convertView, ViewGroup parent) { 42 ImageView imageView; 43 if(convertView == null){ 44 imageView = new ImageView(mContext); 45 imageView.setLayoutParams(new GridView.LayoutParams(115, 115)); 46 imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 47 imageView.setPadding(8,8,8,8); 48 }else{ 49 imageView = (ImageView) convertView; 50 } 51 52 imageView.setImageResource(mImageIds[position]); 53 return imageView; 54 } 55 56 @Override 57 public long getItemId(int position) { 58 return 0; 59 } 60 61 @Override 62 public Object getItem(int position) { 63 return null; 64 } 65 }
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 3 android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 4 android:paddingRight="@dimen/activity_horizontal_margin" 5 android:paddingTop="@dimen/activity_vertical_margin" 6 android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 7 8 <GridView android:id="@+id/gridview" 9 android:layout_width="match_parent" 10 android:layout_height="match_parent" 11 android:columnWidth="120dp" 12 android:horizontalSpacing="10dp" 13 android:verticalSpacing="10dp" 14 android:padding="10dp" 15 android:numColumns="auto_fit" 16 android:stretchMode="columnWidth"> 17 </GridView> 18 19 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical"> 6 7 <ImageView 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" 10 android:id="@+id/imageview"/> 11 12 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.shad_fnst.gridviewwithsubactivitydemo" > 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:theme="@style/AppTheme" > 10 <activity 11 android:name=".MainActivity" 12 android:label="@string/app_name" > 13 <intent-filter> 14 <action android:name="android.intent.action.MAIN" /> 15 16 <category android:name="android.intent.category.LAUNCHER" /> 17 </intent-filter> 18 </activity> 19 <activity 20 android:name=".SingleViewActivity" 21 android:label="@string/title_activity_single_view" > 22 </activity> 23 </application> 24 25 </manifest>
浙公网安备 33010602011771号