بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
سوال در رابطه با آموزش جدید ListView
با سلام استاد در آموزش جدید ساخت List View کلاس ListViewAdapter گفتند که این کلاس هیچ گونه وابستگی به List view خاصی نداره و میتوان از آن برای ایجاد 10 List view استفاده کرد ولی در خط 30 کلاسadapter_color به convertView اختصاص داده میشه که وابسته به List View color هست چه طور میشه این یک خط کد رو هم وابستگیش رو از بین برد و کاملا مستقلش کرد؟
کد استاد پایین گذاشتم خطی که وابسته هست رو bold کردم
package com.uncox.learn.colortable;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
public abstract class ListViewAdapter<T> extends ArrayAdapter<T> {
private LayoutInflater inflater;
public ListViewAdapter(Context context, ArrayList<T> list) {
super(context, 0, list);
inflater = LayoutInflater.from(context);
}
public static class ViewHolder {}
public abstract ViewHolder assign(View convertView);
public abstract void fill(ViewHolder upcastedViewHolder, T item);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
T item = getItem(position);
ViewHolder viewHolder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.adapter_color, parent, false);
viewHolder = assign(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
fill(viewHolder, item);
return convertView;
}
}
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
mester_initialer
6 سال پیش
+1
0
سلام یک روش می تواند پاس دادن لایه مورد نظر به ورودی باشد به شکل زیر :
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
public abstract class AppAdapter<T> extends ArrayAdapter<T> {
private LayoutInflater inflator;
int resourceLayout;
public AppAdapter(Context context, ArrayList<T> list,@LayoutRes int resource){
super(context,0, list);
inflator=LayoutInflater.from(context);
resourceLayout=resource;
}
public static class ViewHolder{
}
public abstract ViewHolder assign(View convnertView);
public abstract void fill(ViewHolder upCastedViewHolder,T item);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
T item=getItem(position);
if(convertView==null){
convertView=inflator.inflate(resourceLayout,parent,false);
viewHolder=assign(convertView);
convertView.setTag(viewHolder);
}else{
viewHolder=(ViewHolder)convertView.getTag();
}
fill(viewHolder,item);
return convertView;
}
}
:و صدا زدن آن به صورت نمونه زیر
appAdapter=new AppAdapter<App>(this,appArray,R.layout.applist_adapter)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .