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

set کردن عکس در متد fill درون پروژه ی ListView ( حل نشده )

amir Alu  12 سال پیش  12 سال پیش
+5 0

من می خوام شبیه به پروژه ی ListView استاد بسازم با این تفاوت که درون item ها عکس قرار بگیره. حالا سوال من این هست. چطور میتونم بگم که در متد fill عکسها از StructItem خوانده میشن؟

 public void fill(ArrayAdapter<StructItem> adapter,StructItem item, int position){
			txtItem.setText(item.title);
			imgItem.//inja chi benevisam???
		}

این هم کلاس StructItem 

 public class StructItem {
	public String title;
	public String description;
	public boolean done;
	public ImageView img;

}
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Spirit  12 سال پیش
+3 0

شما باید داخل کلاس StructItem آدرس فایل یا ID اون رو توسط یک متغیر از جنس int ذخیره کنید نه خود View رو ;

کلاس StructItem

 public class StructItem {
public String title;
public String description;
public boolean done;
public int imgSrc;
}

نحوه آدرس دهی با فرض وجود عکس در پوشه drawable

StructItem item = new StructItem();
item.imgSrc = R.drawable.image01;

و استفاده در متد fill

public void fill(ArrayAdapter<StructItem> adapter,StructItem item, int position){
txtItem.setText(item.title);
imgItem.setImageResource(item.imgSrc);
}
+1 0
ممنونم ولی الان برنامه اجرا میشه ولی هیچی نشون نمیده. سورس کامل برنامه پایین میزارم (12 سال پیش)
پاسخ به سوال 
amir Alu  12 سال پیش
0 0

کلاس AlbumAdapter:

 public class AlbumAdapter extends ArrayAdapter<StructItem> {
	
	public AlbumAdapter(ArrayList<StructItem> array){
		super(G.context, R.layout.albume_fields_view);
	}
	
	private static class ViewHolder{
		public TextView txtItem;
		public ImageView imgItem;
		public ViewHolder(View view){
			txtItem=(TextView) view.findViewById(R.id.txt_item);
			imgItem=(ImageView) view.findViewById(R.id.img_item);
			
		}
		public void fill(ArrayAdapter<StructItem> adapter,StructItem item, int position){
			
			
			txtItem.setText(item.title);
			imgItem.setImageResource(item.imgSrc);
		}
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder;
		StructItem item=getItem(position);
		if(convertView==null){
			convertView=G.inflater.inflate(R.layout.albume_fields_view,parent, false);
			holder=new ViewHolder(convertView);
			convertView.setTag(holder);
		}else{
			holder=(ViewHolder) convertView.getTag();
		}
		holder.fill(this, item, position);
		return convertView;
	}
}

کلاس G 

 public class G extends Application {
	
	public static Context context;
	public static LayoutInflater inflater;
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		context=getApplicationContext();
		inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}

}

  کلاس MainActivity 

 public class MainActivity extends Activity {
	public ArrayList<StructItem> fields = new ArrayList<StructItem>();
	public ArrayAdapter adapter;
	public GridView grdContent;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		grdContent = (GridView) findViewById(R.id.grd_content);
		adapter = new AlbumAdapter(fields);
		grdContent.setAdapter(adapter);
		
		for(int i =0;i<100;i++){
			StructItem titles=new StructItem();
			titles.title="#"+i;
			titles.imgSrc=R.drawable.ic_launcher;
			fields.add(titles);
		}
		
		adapter.notifyDataSetChanged();
	}
	
}

  کلاس StructItem 

 public class StructItem {
	public String title;
	public int imgSrc;
} 
0 0
کسی مشکل را نفهمید از کجاست؟ (12 سال پیش)
0 0
اینجا مشکلی نیست ظاهرا - مشکلی تو layout هات نباشه؟ (12 سال پیش)
0 0
layout ها هیچ مشکلی نداره (12 سال پیش)
0 0
لطفا کد من بررسی کنین (12 سال پیش)

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