2011年8月28日

[Android]OnItemClick的使用方法

一、簡介
有人發問說「OnItemClick的使用方法,如何換頁」。
其實方式不難,我們需要了解的地方在於
(1)Activity 和 Activity 之間需要怎麼換頁和傳遞資料。
(2)OnItemClick的使用方式。

二、方法
(1)  Intent:Intent 有兩種基本的用法,似乎取決於使用者需要的是哪一種。

a.顯示的Intent
在建構Intent時已經指定接收者,類似函式調用的方式。


b.隱藏式的Intent
在建構Intent時並沒有指定接收者,之後在傳送



(2)OnItemClick:一個監聽事件。當項目被點選時,就會啟動此函式。


三、程式碼

Activity.java

package tw.test2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery;
import android.widget.Toast;

public class Test2Activity extends Activity {
	private Gallery gallery;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        gallery=(Gallery)findViewById(R.id.gallery);
        
        //希宣告一個類別,用來設定圖片資訊
        ImageAdapter imageAdapter=new ImageAdapter(this);
        
        //加入圖片
        Integer[] mImageIds={R.drawable.icon,R.drawable.ha};
        
        //設定圖片位置
        imageAdapter.setmImageIds(mImageIds);
        
        //圖片高度
        imageAdapter.setHeight(100);
        //圖片寬度
        imageAdapter.setWidth(200);
        
        gallery.setAdapter(imageAdapter);
        
        //當按下圖片時,所觸發的事件
        gallery.setOnItemClickListener(new OnItemClickListener(){

			@Override
			public void onItemClick(AdapterView parent, View view, int position,
					long id) {
				// TODO Auto-generated method stub
				Toast.makeText(Test2Activity.this, "您選的是第"+position+"張圖", Toast.LENGTH_LONG).show();
				
				//換頁
				Intent intent = new Intent();
				intent.setClass(Test2Activity.this, Report.class);
				/*
				 * 這邊是你要帶過去的資料
				 */
				intent.putExtra("test", "第二頁囉");
				startActivity(intent);
			}});
    }
}
ImageAdapter.java
package tw.test2;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
    private Context mContext;
    private Integer width;
    private Integer height;
    private Integer[] mImageIds;

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

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        //設定圖片來源
        imageView.setImageResource(mImageIds[position]);
        //設定圖片的寬、高
        imageView.setLayoutParams(new Gallery.LayoutParams(width, height));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        return imageView;
    }

    public Integer getHeight() {
        return height;
    }

    public void setHeight(Integer height) {
        this.height = height;
    }

    public Integer[] getmImageIds() {
        return mImageIds;
    }

    public void setmImageIds(Integer[] mImageIds) {
        this.mImageIds = mImageIds;
    }

    public Integer getWidth() {
        return width;
    }

    public void setWidth(Integer width) {
        this.width = width;
    }

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

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

    public long getItemId(int position) {
        return position;
    }
}
Report.java
package tw.test2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

public class Report extends Activity {
      /** Called when the activity is first created. */
 @Override
       public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.report);
               
               Intent intent = this.getIntent();
               String showtest=intent.getStringExtra("test");
               
               Toast.makeText(Report.this,showtest.toString(), Toast.LENGTH_LONG).show();          
               
 }
}
記得加入(AndroidManifest.xml)

沒有留言:

張貼留言