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

آپدیت نشدن حتی نا منظم Progressbar و Button

JSONObject  12 سال پیش  11 سال پیش
0 0

سلام
یه لیست ویو دارم که تو هر آیتمش یه باتن و یه پروگرس بار هم داره
رو باتن که تاچ بشه پروگرس بار ظاهر میشه و دانلود میکنه و بک گراند باتن هم عوض میشه و تمام - یعنی تو ارتباطاتش هیچ مشکلی نیست
البته بگم که این باتن TextView هست نه Button - ( اینطوری راحت تر بودم )
فقط وقتی اسکرول میکنم آیتم نظیرش آپدیت نمیشه  و  چند بار که اسکرول میکنم این آپدیت نشدن حتی نا منظمه
یعنی تو صفحه هفتا آیتم دارم
آیتم اول تغیر که میکنه آیتم هشتم هم تغییر مکنه
و تو اسکرول های بعدی یهو آیتم هشتم درست کار میکنه - یعنی تو حالت قبل از دانلود شدنه -
و آیتم دهم یا هر چیز دیگه شبیه آیتم یک میشه
و گاهی وقتی برمیگردم دیگه آیتم اول مثل شکل اولشه (حالت قبل از دانلود شدن)

؟؟؟

0 0
: من دیگه حرفی ندارم (12 سال پیش)
0 0
XML جان D: میشه کدهای آداپترت رو ببینیم؟ ( خوشم میاد عجول نیستی :) ) (12 سال پیش)
0 0
: اوچیکتم (12 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
JSONObject  12 سال پیش
0 0

        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;
    }
0 0
: فقط fill و getView رو گذاشتم (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
+3 0

Json خوب جیسون جون شما چه فکری کردید لیسنر رو گذاشتی تو fill ؟

برو اون تصاویر پر حجم آنلاین رو ببین ، استاد میخواستن وقتی دانلود تموم شد عکس رو روی ImageView تنطیم کنن ، یادته چیکار کردن ؟

اومدن یه فیلد تو Struct گذاشتن به اسم imageHolder که واسه تو میشه progressBarHolder  و میگی هر آیتمی که وضعیت اش تغییر کرد ، تو OnDownloadingListener بره و Holder اش رو با مقدار های جدید Set کنه. 

یعنی این کار باید تو دانلودر انجام بشه ، دانلودر وظیفه ی آپدیت اون پروگرس بار رو داشته باشه

توضیح اش سخت بود ولی امیدوارم یه چیزایی بهت رسونده باشم !

0 0
Image Holder اصلا واسم آشنا نیست لابد تو ویدئوی بعدیه ؛ باز خدا رو شکر فهمیدم از نادانسته هامه نه دانسته هام (11 سال پیش)

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