PDA

View Full Version : توضیح در مورد پارامترهای متد



harani
دوشنبه 25 دی 1391, 17:24 عصر
لطفاً اگه ممکن در مورد پارامترهای متد زیر توضیح بدین که چی هستنو به چه درد میخوره و کارشون چی . با سپاس :
1

LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;//a

در


public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
{

Nevercom
دوشنبه 25 دی 1391, 19:48 عصر
این متد احتمالاً در Adapter برای مثلاً ListView استفاده شده.
متد getView هربار که یک View جدید می خواد نمایش داده بشه صدا زده میشه.
پارامتر position، محل این view در دیتاست رو نشون میده، مثلاً در ListView این پارامتر index اون row رو نشون میده.
پارامتر convertView همون Viewی هست که نمایش داده میشه، درواقع این View ممکنه موجود باشه و یا یک View جدید ایجاد شده باشه (برای بهینه کردن در performance)
همیشه چک کنید که این مقدار null هست یا نه.
inflater که در کد بالا تعریف شده، میتونه یک Layout رو به View نسبت بده
فرض کنید قصد دارید یک ListView داشته باشید که شخصی سازیش کرده باشید، با کمک LayoutInflater میتونید این Layout رو به View‌نسبت بدید

مثلاً کد زیر رو درنظر داشته باشید:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;

if (convertView == null) {
convertView = myInflater.inflate(R.layout.list_adapter, parent,
false);
holder = new ViewHolder();
holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
holder.infoImage = (ImageView) convertView
.findViewById(R.id.imageView1);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvName.setTypeface(yekan);
holder.tvName.setTag(list.get(position).getId());
holder.tvName.setText(list.get(position).getName() );
holder.infoImage.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

showInfoDialog(position);
}
});


if (position % 2 == 0) {
convertView.setBackgroundResource(R.drawable.grad_ blue);
} else {
convertView.setBackgroundResource(R.drawable.grad_ orange);
}

return convertView;
}
این کد رو برای شخصی سازی ListView استفاده کردم