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 }
MainActivity.java
 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 }
SingeViewActivity.java
 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 }
ImageAdapter.java
 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>
activity_main.xml
 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>
activity_single_view.xml
 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>
AndroidManifest.xml

 

posted on 2015-08-04 16:47  hello_sandy  阅读(224)  评论(0)    收藏  举报