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

استفاده کردن از Spinner و ArrayAdapter

سید صالح حسینی  9 سال پیش  9 سال پیش
0 0

سلام 

آقا من تو یه اکتیوتی دوتا اسپینر دارم که اطلاعات دومی وابسته به اولیه ، ینی با تغییر اولی باید محتوا و آیتم های دومی که یه استرینگ سادن اپدیت بشه

من تو اونت 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.layout.simple_spinner_dropdown_item);
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);
}
//adapterCity.clear();
//adapterCity.addAll(strCities);
}
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
سید صالح حسینی  9 سال پیش
0 0

ببخشید که اینجا مطرح می کنم کسی بانک اطلاعاتی رشته های دانشگاهی و دانشگاه های(اعم از سراسری و آزاد پیام نور و غیرانتفاعی و آموزشکده، علمی کاربردی و ...) ایرانو نداره که من دوباره واسه اونام این کارا رو نکنم ... ثواب داره بخدا...

پاسخ به سوال 
سید صالح حسینی  9 سال پیش
0 0

واقن جایه تعجب داره نمی دونم چرا باید کرش کنه حتی برنامه رو زمانیکه ArrayAdapter و داخل متد اونت sprProvince هم میسازم و میخوام به سپینرشهرستان  ادش کنم اون موقه م کرش می کنه حتی زمانیکه میخوام اداپتر تهی ویا clear()  کنم و یا انسرت کنم و یا اداول کنمم باز کرش میکنه دقیقنم تو همین خطای که گفتم ینی تو اد تو کلیر تو انسرت جدید حتی اینها رو داخله متد post() کلاس Handler هم نوشتم ولی باز برنامه کرش میکنه

کدارو  اینجوری تغییر دادم 

        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.layout.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.layout.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) {

}
});
پاسخ به سوال 
سید صالح حسینی  9 سال پیش
0 0

exception که تولید میشه میگه null pointer Exception من نمی دونم این کجاش ناله و کجاشو باید مقدار دهی می کردم آخه !!!همین کد رو وقتی داخل متد onCreate اکتیوتی میریزیم برنامه کامل کار می کنه اما وقتی که تو event سپینر میریزم این ادا رو در میاره ،میشه یکی کمک کنه ببنیم مشکل از کجاست !!!

پاسخ به سوال 
سید صالح حسینی  9 سال پیش
0 0

آقا واقعا از ملت همیشه در صحنه و انقلابی برنامه نویسان معذرت می خوام برای تحویل دادن چنین صوفی برنامه نویسی که در سمای کدها و آشفته حالی درویشی این چنین چ..باگی رو به بار آورد که باید از مقام معظم شیخ اندروید 1024 تازیانه و یا به عبارتی 1 کیلو تنه ی خشک لاگ کت بخوره!!!

در هر صورت اینجانب رو تا مزر جامه درین و خرمن جان سوختن برد به جان شیخ...

دلیل کرش : به متاعی بیخود چون کامنتی بی مقدار برای اسپینرشهرستان sprCity

شیخ والا :دقت کن پسرم آخه من که برای همیشه پیشتون نیستم مجبور به هجرم نکن ای صاحب وقاحت!!!  


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