در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
class Consumer{
public int id;
public String name;
public boolean state;
public String image; }
قرار است ما اطلاعات هر Consumer را در یک سطر از یک ListView نمایش دهیم. بنابراین یک List از Consumer ایجاد و آن را مقدار دهی میکنیم:
List«Consumer» consumers = new ArrayList«Consumer»();
همانطور که قبلا گفته شد، یک ListView از یک Adapter به عنوان منبع داده برای نمایش دادهها استفاده میکند. در شماره پیش ما یک adapter ایجاد کردیم که از کلاس «ArrayAdapter«String به ارث رسیده بود.
سوال این است که «String» به چه معنی است؟ علامتهای « » به معنی Generic است که در زبان++C به نام template شناخته میشود.
به بحث اصلی برمیگردیم و یک Adapter به صورت زیر درست میکنیم:
public class iAdapter extends ArrayAdapter«Consumer»{
Consumer[] consumers;
Context ctx;
public iAdapter(Context context, Consumer[] objects) {
super(context, R.layout.consumer_row, objects);
this.items = objects;
this.ctx = context; } }
در مثال بالا ما یک layout با کد R.layout.consumer_row ایجاد کردهایم که هر عنصر از objects که یک شیء از کلاس Consumer بوده قرار است اطلاعات آن را در R.layout.consumer_row نمایش دهد. کافی است متد getView کلاس ArrayAdapter را پیاده کنیم:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Consumer currentItem = items[position];
View root = LayoutInflater.from(this.ctx).inflate(R.layout.consumer_row, null);
return root; }
ابتدا بخشی را که قرار است الگوی getView برای آن اجرا شود، توسط position بازیابی میکنیم. سپس با استفاده از LayoutInflator یک View که نشان دهنده یک نمونه از consumer_row است، بازیابی میکنیم. حالا میخواهیم اطلاعات currentItem را در این سطر نمایش دهیم. ابتدا Viewهای موجود را در consumer_row بازیابی میکنیم.
TextView tv = (TextView)root.findViewById(R.id.name);
ImageView imv = (ImageView)root.findViewById(R.id.image);
حالا باید مقدار image و name شیء currentItem را نمایش دهیم:
tv.setText(currentItem.name);
imv. setImageDrawable(Drawable.createFromFile(currentItem.image));
نکته در مورد متد setImageDrawable شیء ImageView است که شما میتوانید جای این الگو، از متدهای دیگر برای نمایش عکس خود استفاده کنید. اینکه کدام متد برای نمایش عکسها مناسب است با توجه به نوع عکسی که میخواهید نمایش دهید، متفاوت است. حال میخواهیم مقدار state را که یک متغیر از نوع Boolean است، در نمایش هر سطر در نظر بگیریم. اگر مقدار state برابر false باشد، رنگ متن tv آن سطر قرمز اگر برابر true باشد، برابر سبز است.
If(currentItem.state)
Tv.setTextColor(Color.GREEN);
else
Tv.setTextColor(Color.RED);
حال برای اینکه ظاهر صفحه زیباتر شود، پس زمینه سطرها را یکی در میان خاکستری و مشکی میکنیم تا نحوه نمایش آنها از یک حالت یکنواخت خارج شود:
If(position % 2 == 0)
Root.setBackgroundColor(Color.GRAY);
Else
Root.setBackgroundColor(Color.BLACK);
امیربهاءالدین سبطالشیخ
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: