gjmkdyttyhujk
چهارشنبه 09 اردیبهشت 1394, 13:30 عصر
سلام خدمت دوستان عزیز.
من دارم یه برنامه ای می نویسم و تو اون باید توی گرید ویو مقادیری رو قرار بدم. یعنی از یه دیتابیسی بخونم و توی گریدویو قرار بدم. منتها چون این فرآیند زمان بر هست من می خواستم که وقتی کاربر روی روی باتن کلیک کرد یه صفحه لودینگی باز بشه و عملیات در بک گراند انجام بشه و بعد از تموم شدن عملیات صفحه لودینگ بسته بشه. توی stack وجاهای دیگه گشتم و می دونم باید از asynctask استفاده کنم ولی کدم ایراد داره و force close میده.
این هم کدی هست که استفاده می کنم. ممنون میشم اساتید راهنمایی بفرمایید.
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
ProgressDialog pd;
@Override
protected void onPreExecute() {
pd = new ProgressDialog(getApplicationContext());
pd.setTitle("Processing...");
pd.setMessage("Please wait.");
pd.setCancelable(false);
pd.setIndeterminate(true);
pd.show();
}
@Override
protected Void doInBackground(Void... arg0) {
try {
final GridviewAdapter mAdapter;
final ArrayList<String> listCountry;
final ArrayList<Integer> listFlag;
listCountry = new ArrayList<String>();
listCountry.add("India");
listCountry.add("China");
listCountry.add("Canada");
listCountry.add("Norway");
listCountry.add("France");
listCountry.add("Germany");
listCountry.add("Iran");
listCountry.add("Italy");
listCountry.add("Japan");
listCountry.add("Korea");
listCountry.add("Mexico");
listCountry.add("Netherlands");
listCountry.add("Portugal");
listCountry.add("Russia");
listCountry.add("Saudi Arabia");
listCountry.add("Spain");
listCountry.add("Turkey");
listCountry.add("United Kingdom");
listCountry.add("United States");
listFlag = new ArrayList<Integer>();
listFlag.add(R.drawable.w1);
listFlag.add(R.drawable.w2);
listFlag.add(R.drawable.w3);
listFlag.add(R.drawable.w4);
listFlag.add(R.drawable.w5);
listFlag.add(R.drawable.w6);
listFlag.add(R.drawable.w7);
listFlag.add(R.drawable.w8);
listFlag.add(R.drawable.w9);
listFlag.add(R.drawable.w10);
listFlag.add(R.drawable.w11);
listFlag.add(R.drawable.w12);
listFlag.add(R.drawable.w13);
listFlag.add(R.drawable.w14);
listFlag.add(R.drawable.w15);
listFlag.add(R.drawable.w16);
listFlag.add(R.drawable.w17);
listFlag.add(R.drawable.w18);
listFlag.add(R.drawable.w19);
mAdapter = new GridviewAdapter(FirstPageActivity.this,listCountry , listFlag);
// Set custom adapter to gridview
GridView gridView0 = (GridView)findViewById(R.id.gridView1);
gridView0.setAdapter(mAdapter);
//Do something...
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (pd!=null) {
pd.dismiss();
}
}
};
task.execute((Void[])null);
من دارم یه برنامه ای می نویسم و تو اون باید توی گرید ویو مقادیری رو قرار بدم. یعنی از یه دیتابیسی بخونم و توی گریدویو قرار بدم. منتها چون این فرآیند زمان بر هست من می خواستم که وقتی کاربر روی روی باتن کلیک کرد یه صفحه لودینگی باز بشه و عملیات در بک گراند انجام بشه و بعد از تموم شدن عملیات صفحه لودینگ بسته بشه. توی stack وجاهای دیگه گشتم و می دونم باید از asynctask استفاده کنم ولی کدم ایراد داره و force close میده.
این هم کدی هست که استفاده می کنم. ممنون میشم اساتید راهنمایی بفرمایید.
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
ProgressDialog pd;
@Override
protected void onPreExecute() {
pd = new ProgressDialog(getApplicationContext());
pd.setTitle("Processing...");
pd.setMessage("Please wait.");
pd.setCancelable(false);
pd.setIndeterminate(true);
pd.show();
}
@Override
protected Void doInBackground(Void... arg0) {
try {
final GridviewAdapter mAdapter;
final ArrayList<String> listCountry;
final ArrayList<Integer> listFlag;
listCountry = new ArrayList<String>();
listCountry.add("India");
listCountry.add("China");
listCountry.add("Canada");
listCountry.add("Norway");
listCountry.add("France");
listCountry.add("Germany");
listCountry.add("Iran");
listCountry.add("Italy");
listCountry.add("Japan");
listCountry.add("Korea");
listCountry.add("Mexico");
listCountry.add("Netherlands");
listCountry.add("Portugal");
listCountry.add("Russia");
listCountry.add("Saudi Arabia");
listCountry.add("Spain");
listCountry.add("Turkey");
listCountry.add("United Kingdom");
listCountry.add("United States");
listFlag = new ArrayList<Integer>();
listFlag.add(R.drawable.w1);
listFlag.add(R.drawable.w2);
listFlag.add(R.drawable.w3);
listFlag.add(R.drawable.w4);
listFlag.add(R.drawable.w5);
listFlag.add(R.drawable.w6);
listFlag.add(R.drawable.w7);
listFlag.add(R.drawable.w8);
listFlag.add(R.drawable.w9);
listFlag.add(R.drawable.w10);
listFlag.add(R.drawable.w11);
listFlag.add(R.drawable.w12);
listFlag.add(R.drawable.w13);
listFlag.add(R.drawable.w14);
listFlag.add(R.drawable.w15);
listFlag.add(R.drawable.w16);
listFlag.add(R.drawable.w17);
listFlag.add(R.drawable.w18);
listFlag.add(R.drawable.w19);
mAdapter = new GridviewAdapter(FirstPageActivity.this,listCountry , listFlag);
// Set custom adapter to gridview
GridView gridView0 = (GridView)findViewById(R.id.gridView1);
gridView0.setAdapter(mAdapter);
//Do something...
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (pd!=null) {
pd.dismiss();
}
}
};
task.execute((Void[])null);