آپدیت نشدن حتی نا منظم Progressbar و Button
سلام
یه لیست ویو دارم که تو هر آیتمش یه باتن و یه پروگرس بار هم داره
رو باتن که تاچ بشه پروگرس بار ظاهر میشه و دانلود میکنه و بک گراند باتن هم عوض میشه و تمام - یعنی تو ارتباطاتش هیچ مشکلی نیست
البته بگم که این باتن TextView هست نه Button - ( اینطوری راحت تر بودم )
فقط وقتی اسکرول میکنم آیتم نظیرش آپدیت نمیشه و چند بار که اسکرول میکنم این آپدیت نشدن حتی نا منظمه
یعنی تو صفحه هفتا آیتم دارم
آیتم اول تغیر که میکنه آیتم هشتم هم تغییر مکنه
و تو اسکرول های بعدی یهو آیتم هشتم درست کار میکنه - یعنی تو حالت قبل از دانلود شدنه -
و آیتم دهم یا هر چیز دیگه شبیه آیتم یک میشه
و گاهی وقتی برمیگردم دیگه آیتم اول مثل شکل اولشه (حالت قبل از دانلود شدن)
؟؟؟
public void fill(ArrayAdapter<StructImage> adapter, final StructImage item, int position) {
txtTitle.setText(item.title);
float size = (float) item.size;
txtSize.setText("" + (String.format("%.2f mb", ((size / 1024) / 1024))));
final String filename = item.thumbnail.replace("/thumbnail/", "");
File imageFile = new File(G.DIR_FINAL + "/" + filename);
if ( !imageFile.exists()) {
imgPic.setImageBitmap(null);
DownloadManager.addToDownloadList(item.thumbnail);
return;
}
Bitmap bm = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
imgPic.setImageBitmap(bm);
btnDownload.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
OnDownloadCompleteListener completelistener = new OnDownloadCompleteListener() {
@Override
public void onDownloadComplete(String url, String localPath) {
btnDownload.setText("Downloaded");
btnDownload.setBackgroundColor(Color.parseColor("#667788"));
prgDownload.setVisibility(View.GONE);
StartupActivity.adapter.notifyDataSetChanged();
}
};
OnDownloadingListener dlingListener = new OnDownloadingListener() {
@Override
public void onDownloading(int downloadedSize, int fileSize, int percent) {
btnDownload.setBackgroundColor(Color.parseColor("#112233"));
btnDownload.setText("Downloading...");
prgDownload.setVisibility(View.VISIBLE);
prgDownload.setProgress(percent);
}
};
String orig = filename.replace("t-", "");
FileDownloader.download("http://192.168.1.3/file-server" + item.url, G.DIR_DL + "/" + orig, completelistener, dlingListener);
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructImage item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_image, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
Json خوب جیسون جون شما چه فکری کردید لیسنر رو گذاشتی تو fill ؟
برو اون تصاویر پر حجم آنلاین رو ببین ، استاد میخواستن وقتی دانلود تموم شد عکس رو روی ImageView تنطیم کنن ، یادته چیکار کردن ؟
اومدن یه فیلد تو Struct گذاشتن به اسم imageHolder که واسه تو میشه progressBarHolder و میگی هر آیتمی که وضعیت اش تغییر کرد ، تو OnDownloadingListener بره و Holder اش رو با مقدار های جدید Set کنه.
یعنی این کار باید تو دانلودر انجام بشه ، دانلودر وظیفه ی آپدیت اون پروگرس بار رو داشته باشه
توضیح اش سخت بود ولی امیدوارم یه چیزایی بهت رسونده باشم !
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .