آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال در رابطه با آموزش جدید ListView

هدهدی  6 سال پیش  6 سال پیش
0 0

با سلام استاد در آموزش جدید ساخت 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) 
0 0
با سلام ممنون دوست عزیز موقع کال کردن ارور میگیره شما اجرا کردید برنامه رو؟ میشه لطف کنید کل سورستون رو بگذارید ببینم (6 سال پیش)
0 0
بله من کد بالا را با کلاس مربوط به پروژه مارکت استاد انجام دادم و بدون مشکل اجرا شد .اگر ارور را درج کنید شاید کمکی از دستم بر بیاید. (6 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .