بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ست کردن progressbar

مدیریت گفتگو
Salamon 10 سال پیش
آخرین تغییر: 10 سال پیش

با عرض سلم و خسته نباشید.بنده یک دایرکتوری دارم که تعدادی فایل داخلشه..یک باتن دارم وقتی روش کلیک میشه تمامی فایلهای اون دایرکتوری رو پاک میکنه و اصلا مشکلی نیست....حالا سوالم اینجاست چجوری میتونم پاک شدن فایلها رو به پروگرس بار ست کنم و تعداد فایلهای حذف شده و باقی مانده رو تو پروگرش نشون..والا در مورد لیسنرها تحقیق کردم ولی نتونستم پیاده سازیش کنم ...پیشاپیش ممنون.قطعه کد حذف فایلهای دایرکتوری....اینجا مثلا تست نوشتم اسم دایرکتوری رو.

  public void clearData() {
if (new File("test").isDirectory())
{
String[] children = new File(G.DIR_TELEGRAM_CACH).list();
for (int i = 0; i < children.length; i++)

{
new File(test, children[i]).delete();

}
}
}

نظرات

Salamon 10 سال پیش
یکی یه سرنخ بده ...چندتا راه رفتم نشد...
مرتضی 10 سال پیش
می تونی یه لیسینر تعریف کنی( بعد خطی که داخله حلقه چون بعد اون خط مطمعنیم فایل حذف شده) و داخل listener می تونی اسم فایل برگردونی

پاسخ‌ها 5

مرتضی 10 سال پیش

 publicvoid clearData(OnDeleteComplete listener){
if(newFile("test").isDirectory())
{
String[] children =newFile(G.DIR_TELEGRAM_CACH).list();
for(int i =0; i < children.length; i++)

{
newFile(test, children[i]).delete();
listener(i+1);


}
}
}
که این کد شماره ی فایل رو بر میگردونه

نظرات

Salamon 10 سال پیش
متشکرم از پاسختون ولی بازم سوال دارم.ببینید من میخام درصد فایلهای پاک شده رو بفرستم به پروگرس بار لیستنر رو تعریف کردم خوب کار میکنه فقط پروگرس بار یه دفعه پر میشه میره رو صد درصد.کدو میزارم ببینید.درصد حذف از دایرکتوری رو اشتباه بدست میارم.ممنون میشم کمک کنید/
Salamon 10 سال پیش

    public void clearData(OnDeleteCompleteListener listener) {
if (new File(DIR_TEST).isDirectory())
{
float deletePercent = 0;
int deleteSize = 0;
String[] children = new File(DIR_TEST).list();
for (int i = 0; i < children.length; i++)

{
deleteSize += i;
deletePercent = 100.0f * deleteSize;
if (listener != null) {

listener.onProgressDelete((int) deletePercent);

}

new File(DIR_TEST, children[i]).delete();

// listener(i + 1);

}
}
}

نظرات

Salamon 10 سال پیش
مشکلم اینجا اینه که نمیتونم درصدی از فایلهای حذف شده رو بدست بیارم.مثلا 1000 تا عکس داریم تو پوشه رو رکمه حذف که میزنم میخام پروگرس بار درصد حذف رو تا پاک شدن همه فایلها نشون بده و به صد درصد برسه.
Salamon 10 سال پیش

     public void clearData(final OnDeleteCompleteListener listener) {
if (new File(DIR_TEST).isDirectory())
{
float deletePercent = 0;
int deleteSize = 0;
String[] children = new File(DIR_TEST).list();
for (int i = 0; i < children.length; i++)

{
deleteSize += i;
deletePercent = (float) deleteSize / children.length * 100.0f;
final float deletepercent2 = deletePercent;

if (listener != null) {
G.HANDLER.post(new Runnable() {

@Override
public void run() {
listener.onProgressDelete((int) deletepercent2);

}
});

}

new File(DIR_TEST, children[i]).delete();



}
}
}

نظرات

Salamon 10 سال پیش
دوستان کجای این کد محاسبه رو اشتباه انجام میده deletePercent مقدارش درست در نمیاد یک دفعه پروگرس میره رو صد ولی همه فایلها پاک میشن.
MyNewName 10 سال پیش
یه log بگیر ببین پشت برنامه چطور عمل میکنه : Log.i("test",""+deletePercent);
Salamon 10 سال پیش
چیزی چاپ نمیکنه هرکاری کردم نمیدونم مشکل کجاست
HoCoder 10 سال پیش

شما اگه طبق گفته خودتون تعداد فایل هایی که میخواین حذف کنید رو بدست بیارید این کد به نظر من اشتباه هست و شما اول تعداد فایل ها رو که بدست آوردین بعد به تعداد فایل هاتون عمل حذف رو انجام میدین با این کد تعداد فایل ها رو بگیرید بعد هر فایلی رو که حذف کردید لیسنر رو صد بزنید

File dir =newFile("yourfolder");
File[] files = dir.listFiles();
int numberOfFiles=files.length;

نظرات

Criss 10 سال پیش

برای پرگرس بارتون این کار رو انجام بدید

PrgressBar.setMax = children.length;
PrgressBar.setProgress(children[i].getindex); // این قسمت مثال هست

از آرایه داینامیک استفاده کنید خیلی بهتر هست < آرایه های استاتیک GetIndex رو الان خاطرم نیست چطوری میشه گرفت

 

نظرات

Salamon 10 سال پیش
میشه بیشتر توضیح بدین من مقدارو به لیسنر پاس میدم مستقیما نمیتونم پروگرس رو ست کنم ست مکس چه کاری رو انجام میده اینجا ؟

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