سلام.
بنده فرض می کنم که شما کد صحیح برای عکس گرفتن و سپس نمایش عکس گرفته شده در ImageView را دارید (حتما کل این روند را در یک پروژه ساده و تنها با یک ImageView تست کنید تا از درستی کدها خیالمان راحت شود). بنابراین ما روند کار برای یک ImageView را به صورت زیر داریم :
1- شناسایی ImageView
2- رفتن کاربر به صفحه دوربین برای گرفتن عکسی (بعد از اشاره بر روی ImageView)
3- به محض گرفته شدن عکس، عکس در ImageView نمایش داده می شود (Bitmap را در ImageView نمایش می دهیم، یا اینکه فایل عکس در حافظه خارجی ذخیره شده و بعد آن را در ImageView نمایش می دهیم)
بنابراین کل کد ما، شامل سه مرحله فوق است. اکنون می خواهیم که این روند، قابل اجرا برای تک تک item های GridView (یا ListView --> مشابه می باشند) باشد. برای این منظور، ابتدا باید Adapter مربوط به GridView (یا ListView) را بیابیم. Adapter بخشی از کدها است که ساختار و عملکرد item ها را تعریف می کند (item ها را می سازد).
به عنوان یک مثال، کلید زیر، چگونگی ساخت یک ListView را شرح می دهد :
کلید شماره 843
در آن، Adapter به صورت زیر تعریف شده است :
کد پیاچپی:
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_item, parent, false);
String stringName = "string_key_" + String.valueOf(position+1);
int string_res_ID = getResources().getIdentifier(stringName,"string",getPackageName());
String my_string = getResources().getString(string_res_ID);
TextView tv = (TextView) row.findViewById(R.id.textView1);
tv.setText(my_string);
String imageName = "key_" + String.valueOf(position+1);
int image_res_ID = getResources().getIdentifier(imageName,"drawable",getPackageName());
ImageView iv = (ImageView) row.findViewById(R.id.imageView1);
iv.setImageResource(image_res_ID);
return row;
}
}
در آن، با کد زیر، View مربوط به ردیف را به دست می آوریم (تا با آن بتوانیم عنصرهای تعریف شده در لایه گرافیکی متناظر با هر ردیف را شناسایی کنیم) :
کد پیاچپی:
View row = inflater.inflate(R.layout.list_item, parent, false);
بعد مثلا یک TextView به صورت زیر شناسایی شده و متن دلخواهمان را در آن نمایش داده ایم (می توان برای هر item ، یک متن متفاوت را نمایش داد) :
کد پیاچپی:
TextView tv = (TextView) row.findViewById(R.id.textView1);
tv.setText(my_string);
بنابراین، شما مشابه این Adapter ، یک Adapter برای GridView (یا ListView) خود ساخته (یا اگر قبلا داشته، آن را ویرایش کنید) و درون آن، ابتدا ImageView را شناسایی نموده و بعد همان کدهای مربوط به روند مورد نظر را برای آن بنویسید (همان روند سه مرحله ای که بخش آخر آن، نمایش عکس گرفته شده در ImageView است). چون کدها درون Adapter است، پس با اشاره بر روی یک Item ، عنصر ImageView درون آن، عکس را دریافت کرده و نمایش می دهد (سایر item ها تغییر داده نمی شوند).