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

مشکل در آپدیت imageview در آداپتر به سبک استاد

احمد  9 سال پیش  9 سال پیش
0 0

سلام دوستان من لیستی دارم که اطلاعات از php خونده میشه و داخل یک دیتابیس داخلی ذخیره میشه . بعد از اون دیتا داخل یک آرایه ریخته میشه و برای ادابتر ارسال میشه چون این کالا ها عکس هم دارن و به صورت بیس 64 میگیرمش برای افزایش سرعت اول کالا ها را میگیرم داخل دیتابیس میریزم و می خونم و در لیست نمایش میدم و گرفتن عکس را گذاشتم زمانی که لیست اسکرول میشه یعنی کالا ها تمام فیلد هاش پر میشه به جز قسمت هایی که مربوط به عکسه با اسکرول کردن عکس ذخیره میشه و دیتابیس هم به روز میشه اما چون قبلا ارایه برای اداپتر فرستادم دیگه نمی تونم عکس ها را بیارم و همش null می مونه به نظرتون چیکار کنم.

مثلا اگر کلاس به صورت زیر باشه:

 private String Code;
	private String Name;
	private double Mojodi;
	private String Maker;
	private String Pic;
	private String Type;
	public String sdcard;

ابتدا کل کالا ها بدون pic و type و sdcard دریافت میشه و ایستویو نشون داده میشه و مشکلی نیست حالا می خوام با اسکرول عکس را بگیره ذخیره کنه (که میگیره) و نمایش بده (اما نمایش نمیده چون ارایه به روز نشده)

 public class Adapter extends BaseAdapter {

	Context mContext;
	LayoutInflater inflater;
	private List<KalaStruct> Kalalist = null;
	private ArrayList<KalaStruct> AllKalaArraylist;
	private int version;

	public AdapterKala(Context context, List<KalaStruct> Kalalist) {
		mContext = context;
		this.Kalalist = Kalalist;
		inflater = LayoutInflater.from(mContext);
		this.AllKalaArraylist = new ArrayList<KalaStruct>();
		this.AllKalaArraylist.addAll(Kalalist);
		version = Build.VERSION.SDK_INT;

	}

	private class ViewHolder {

		public TextView txttitle;
		public TextView txtdes;
		public TextView txtprice;
		public ImageView imgkala;
		public LinearLayout layoutRoot;

		public ViewHolder(View view) {
			txttitle= (TextView) view
.findViewById(R.id.txttitle);
txtdes= (TextView) view
.findViewById(R.id.txtdes);
txtprice= (TextView) view
.findViewById(R.id.txtprice);
imgkala = (ImageView) view
.findViewById(R.id.imgkala);
layoutRoot = (LinearLayout) view
.findViewById(R.id.layoutRoot);
} @SuppressLint("NewApi") public void fill(AdapterKala adapter, final KalaStruct item, final int position) { // Set the results into TextViews txttitle.setText(Kalalist.get(position).getName());
txtdes.setText(Kalalist.get(position).getCode());
txtprice.setText(""
+ G.context.getResources().getString(R.string.price2) + " " + Kalalist.get(position).getmojodi() + " " + G.context.getResources().getString(R.string.toman)); try { imgkala.setImageBitmap(null);
imgkala.setBackground(null);
if (Kalalist.get(position).sdcard.equals("no_image")) { if (version >= 16) { imgkala_listkala.setBackground(G.context.getResources() .getDrawable(R.drawable.ic_not_available)); } else { imgkala_listkala.setBackgroundDrawable(G.context .getResources().getDrawable( R.drawable.ic_not_available)); } } else if (Kalalist.get(position).sdcard .equals("null")) { File imageFile = new File(G.DIR_IMAGES + "/" + item.getCode() + "." + item.getType()); if (!imageFile.exists()) { imgkala.setImageBitmap(null);
DownloadManager.addToDownloadList(item.getCode()); return; } } else { imgkala_listkala.setImageBitmap(null); Bitmap bmp = BitmapFactory .decodeFile(item.K_imageurl_sdcard); imgkala_listkala.setImageBitmap(bmp); } } catch (Exception e) { Log.e(G.APP_LOG, "Exception AdapterKala"); } layoutRoot.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { try { G.selectedKala = Kalalist.get(position); Intent intent = new Intent(G.CurrentActivity, ActivityKalaDetail.class); G.CurrentActivity.startActivity(intent); } catch (Exception e) { e.printStackTrace(); G.selectedKala = null; } } }); } } @SuppressWarnings("deprecation") @SuppressLint({ "InflateParams", "NewApi" }) @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; KalaStruct item = getItem(position); if (convertView == null) { convertView = inflater.inflate(R.layout.adapter_kalalist, null); holder = new ViewHolder(convertView); convertView.setTag(holder); Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.translate_r2l); // animation.setStartOffset(position * 500); // convertView.startAnimation(animation); } else { holder = (ViewHolder) convertView.getTag(); Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.translate_r2l); // animation.setStartOffset(position * 500); // convertView.startAnimation(animation); } holder.fill(this, item, position); final int version = Build.VERSION.SDK_INT; return convertView; } @Override public int getCount() { return Kalalist.size(); } @Override public KalaStruct getItem(int position) { Log.i(G.APP_LOG, "Kalalist.get(position) Exception " + position); return Kalalist.get(position); } @Override public long getItemId(int position) { return position; } public void clear() { this.Kalalist.clear(); this.AllKalaArraylist.clear(); this.Kalalist = G.KalaList; this.AllKalaArraylist.addAll(Kalalist); } public void filter(String charText) { charText = charText.toLowerCase(Locale.getDefault()); Kalalist.clear(); if (charText.length() == 0) { Kalalist.addAll(AllKalaArraylist); } else { charText = charText.replace('ي', 'ی').replace('ك', 'ک'); for (KalaStruct Ks : AllKalaArraylist) { if (Ks.getK_Name1().toLowerCase(Locale.getDefault()) .contains(charText) | Ks.getK_Code().toLowerCase(Locale.getDefault()) .contains(charText) | String.valueOf(Ks.getK_List_PrFo()) .toLowerCase(Locale.getDefault()) .contains(charText)) { Kalalist.add(Ks); } } } notifyDataSetChanged(); } }

کلاس Downloadmanager:

 package my_class;

import ir.na9vi.ActivityKalaliast;

import java.util.ArrayList;

import android.util.Log;

public class DownloadManager {
	public static ArrayList<String> kalacodes = new ArrayList<String>();

	public static OnDownloadListener listener;

	public static void initialize() {
		listener = new OnDownloadListener() {

			@Override
			public void onDownloadComplete(String K_Code, String localpath) {

				Log.i(G.APP_LOG, "K_Code: " + K_Code + "\n" + " Save path: "
						+ localpath);

				if (ActivityKalaliast.K_Adapter2 != null) {
					ActivityKalaliast.K_Adapter2.notifyDataSetChanged();
				}

			}
		};
	}

	public static void addToDownloadList(String kalacode) {

		if (kalacodes.contains(kalacode)) {
			return;
		}

		Log.i(G.APP_LOG, "url: " + kalacode);
		kalacodes.add(kalacode);
		Getpic.Read(kalacode, listener);
	}
}

داخل activity هم 

 K_Adapter2 = new AdapterKala(this, G.KalaList);
 برای این سوال پاسخی وجود ندارد.

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