PDA

View Full Version : استفاده کردن از Spinner و ArrayAdapter



saman_husseini
شنبه 20 آذر 1395, 10:54 صبح
آقا من تو یه اکتیوتی دوتا اسپینر دارم که اطلاعات دومی وابسته به اولیه ، ینی با تغییر اولی باید محتوا و آیتم های دومی که یه استرینگ سادن اپدیت بشه


من تو اونت OnItemSelectedListner اولی اطلاعات رو از بانک اطلاعاتیم میگیریم و اون رو داخل یه آرایه ی استرینگ میریزم اما به محض اینکه میخوام اون داده ها رو به ArrayAdapter دومی ست کنم برنامه م کرش می کنه کسی میدونه چجوری مشکلم حل میشه؟

آقا راستی این اطلاعات استان ها و شهرهای ایران که با مکافاتی تبدیل به بانکشون کردم که الانم تنم رو می لرزونه (اول همه این اطلاعات رو از نت و ویکی پدیا بگیر بعدش ... شاهکاری کردم به خدا :))))))) ) ویژوال استودیوم که نصب نبود و فضای دخیره سازیم نداشتم که نصبشون کنم و متاسفانه مجبور شدم از کلاس ها و توابع اندروید برای تبدیل کردنشون به Insert های Sql استفاده کنم اطلاعات 421 شهرستان ایران که کاملا جدید و قابل استفاده است و هم فایل اکسلشو واسه اپدیتش میذارم واسه زمانی که شهرستان های جدید تشکیل بشن و بتونید اطلاعات رو به روز کنید


اطلاعات تکمیلی : از داخل کلاس اصلی برنامه که GlobalClass نامگذاری شده دوتا ArrayList به صورت Provinces , Cities تعریف شدن که داده های اولیه در همون کلاس از بانک گرفته میشه و در کلاس اکتیویتی دوم فیلد های استرینگی این آبجکت ها به یه آرایه تبدیل میشه که به خورد ArrayAdapter<String> اسپینرها پاس داده بشه کد برنامه به صورت زیر است :


sprProvince = (Spinner) findViewById(R.id.sprProvince);
String[] strProvinces = new String[GlobalClass.Provinces.size()];
for (int intIndex = 0; intIndex < GlobalClass.Provinces.size(); intIndex++) {
Log.i("SattementApp", "Provinces Main Class :" + intIndex + "," + GlobalClass.Provinces.get(intIndex).ProvinceName);
strProvinces[intIndex] = GlobalClass.Provinces.get(intIndex).ProvinceName;
}
adapterProvince = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, strProvinces);
adapterProvince.setDropDownViewResource(android.R. layout.simple_spinner_dropdown_item);
sprProvince.setAdapter(adapterProvince);
//sprCity = (Spinner) findViewById(R.id.sprCity);
//Cities = GlobalClass.Cities;
/*
strCities = new String[GlobalClass.Cities.size()];
for (int intIndex = 0; intIndex < Cities.size(); intIndex++) {
Log.i("SattementApp", "City Main Class :" + intIndex + "," + Cities.get(intIndex).CityName);
strCities[intIndex] = Cities.get(intIndex).CityName;
}
*/
//adapterCity = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, strCities);
//adapterCity.setDropDownViewResource(android.R.layo ut.simple_spinner_dropdown_item);
//adapterCity.setNotifyOnChange(true);
//sprCity.setAdapter(adapterCity);
sprProvince.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int intProvinceID = (int) (sprProvince.getSelectedItemId());
ListOfCities(intProvinceID);
strCities = new String[Cities.size()];
for (int intIndex = 0; intIndex < Cities.size(); intIndex++) {
Log.i("SattementApp", "Cities Main Class :" + intIndex + "," + Cities.get(intIndex).CityName);
strCities[intIndex] = Cities.get(intIndex).CityName;
//adapterCity.insert(strCities[intIndex],intIndex);
}
ArrayAdapter<String> adapterCity = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, strCities);
adapterCity.setDropDownViewResource(android.R.layo ut.simple_spinner_dropdown_item);
adapterCity.setNotifyOnChange(true);
adapterCity.notifyDataSetChanged();
final ArrayAdapter<String> finaladapterCity;// = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, strCities);
finaladapterCity = adapterCity;
oHandler.post(new Runnable() {
@Override
public void run() {
try {
sprCity.setAdapter(finaladapterCity);
} catch (Exception ex) {
//ex.notify();
//Log.e("SattementApp",ex.getLocalizedMessage());
Log.e("SattementApp",ex.toString());
Log.e("SattementApp", "Error is :" + ex.getMessage());
}

}
});

//adapterCity.addAll(strCities);
//sprCity.setAdapter(adapterCity);
//adapterCity.notifyDataSetChanged();
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});