DialogでのGalleryの使い方

4629 ワード

Dialogには2つの方法があります.
一:ActivityでonCreateDialog(int id)を書き換える方法でDialogのオブジェクトを作成して返し、ActivityのshowDialog(int id)とDismissDialog(int id)を呼び出してDialogダイアログボックスを表示および非表示にする
	@Override
	protected Dialog onCreateDialog(int id) {
		AlertDialog.Builder dialog=null;
		if(id==100){
			LinearLayout ll = (LinearLayout)LayoutInflater.from(this).inflate(R.layout.picturelayout, null);
			gallery = (Gallery)ll.findViewById(R.id.gallery1);	
			gallery.setAdapter(ia);
			gallery.setOnItemClickListener(new OnItemClickListener() {
				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
						long arg3) {
					str = ia.Name(arg2);
				}		
			});
			dialog = new AlertDialog.Builder(this).setView(ll);
			dialog.setPositiveButton(" ", new DialogInterface.OnClickListener() {				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					
				}
			});
			dialog.setNegativeButton(" ", new DialogInterface.OnClickListener() {				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					str=0;
				}
			});
			
		}
		return dialog.create();
	}

上記の方法で作成する場合、Buttonのclickイベントを作成するには、Builderオブジェクトを作成し、BuilderオブジェクトでButtonを作成するdialogに戻る必要があることに注意してください.create();
次にoncreate()メソッドでshowDialog(100)を呼び出す.いいです.
二:Dialogオブジェクトdialogを直接newしてshow()とdismiss()メソッドを呼び出す
	public void check(){
			AlertDialog.Builder builder = new AlertDialog.Builder(SavePictureActivity.this);     
			final View textEntryView = LayoutInflater.from(this).inflate(R.layout.picturelayout, null);  
		    
//			LinearLayout ll = (LinearLayout)LayoutInflater.from(this).inflate(R.layout.picturelayout, null);
			
			gallery = (Gallery)textEntryView.findViewById(R.id.gallery1);	
			gallery.setAdapter(ia);
			gallery.setOnItemClickListener(new OnItemClickListener() {
				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
						long arg3) {
					str = ia.Name(arg2);
				}		
			});  
		     builder.setPositiveButton(" ", new DialogInterface.OnClickListener() {  
		         public void onClick(DialogInterface dialog, int whichButton) {  
		             
		         }  
		     });  
		     builder.setNegativeButton(" ", new DialogInterface.OnClickListener() {  
		         public void onClick(DialogInterface dialog, int whichButton) {  
		        	 str=0;
		         }  
		     });  
		   builder.setView(textEntryView).create().show();
	}

Builderオブジェクトbuilderをbuilderに作成し始めたことに注意してください.setView(textEntryView).creat()はcreat()を呼び出してDialogのオブジェクトを作成し、show()メソッドを呼び出してDialogダイアログボックスを表示します.
上でViewオブジェクトを作成するときに別の方法を使いました
final View textEntryView = LayoutInflater.from(this).inflate(R.layout.picturelayout, null);
LinearLayout ll = (LinearLayout)LayoutInflater.from(this).inflate(R.layout.picturelayout, null);
どちらでもいいですが、最初の方法をお勧めします.最初の方法はもっと大衆的なので、レイアウトが線形レイアウトではない場合があります.
Galleryの使い方:
呼び出し方法またはoncreate()メソッドでコードを呼び出せばいいです.
                        ImageAdapter ia = new ImageAdapter(this);			
                        gallery = (Gallery)textEntryView.findViewById(R.id.gallery1);	
			gallery.setAdapter(ia);
			gallery.setOnItemClickListener(new OnItemClickListener() {
				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
						long arg3) {
					str = ia.Name(arg2);
				}		
			});  

コントロールgalleryを見つけてから、galleryアダプタにデータを入れます.
ImageAdapterのページコードは次のとおりです.
public class ImageAdapter extends BaseAdapter{

	Context context;
    public Integer[] myImageIds = {R.drawable.auto1, R.drawable.auto2,R.drawable.auto3,R.drawable.auto4,
    		R.drawable.auto5,R.drawable.bike,R.drawable.bike1};
    
	public ImageAdapter(Context context){
		this.context = context;
	}
	@Override
	public int getCount() {
		return myImageIds.length;
	}
	@Override
	public Object getItem(int position) {
		return position;
	}

	@Override
	public long getItemId(int position) {
		return position;
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView iv = new ImageView(context);
		iv.setImageResource(myImageIds[position]);
		iv.setScaleType(ImageView.ScaleType.FIT_XY);
	    iv.setLayoutParams(new Gallery.LayoutParams(136, 88));  
	    iv.setBackgroundColor(Color.WHITE); 
	    return iv;  
	}
	public int Name(int id){
		return myImageIds[id];
	}
}

具体的なGalleryの様々な使い方はブログ:AndroidのダイアログボックスAlertDialogの使用テクニックを参考にすることができます.