2013-10-08 3 views
0

Я застрял в ситуации. Я пытаюсь использовать прядильщики, чтобы пользователи могли выбирать места. Я заполняю прядильщики с помощью sqlite. Идея иногда заключается в стране, провинции, городе и подзонах, однако любое поле может быть пустым (если не заполнено в базе данных).Android Dev - Spinner

Я хотел бы, чтобы прядильщики были «скрыты», если у них нет значений, хранящихся в базе данных. Однако скрыт только «следующий шаг вниз» (например, из страны в провинцию) и не все «другие шаги вниз» (город и подрайон)

Надеюсь, что я достаточно ясен, если не могу прояснить.

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
{ 

    if (parent.getId() == R.id.spinner_query_country) 
    { 
     country.selected = (class_location)country.spinner.getSelectedItem(); 
     get_province(); 
    } 
    else if (parent.getId() == R.id.spinner_query_province) 
    { 
     province.selected = (class_location)province.spinner.getSelectedItem(); 
     get_city(); 
    } 
    else if (parent.getId() == R.id.spinner_query_city) 
    { 
     city.selected = (class_location)city.spinner.getSelectedItem(); 
     get_sub_area(); 
    } 
    else if (parent.getId() == R.id.spinner_query_sub_area) 
    { 
     sub_area.selected = (class_location)sub_area.spinner.getSelectedItem(); 
    } 

} 

public void onNothingSelected(AdapterView<?> parent) 
{ 
    // TODO Auto-generated method stub 
} 

void get_country() 
{  
    make_spinner(country, db.getAll("SELECT * FROM country")); 
} 
void get_province() 
{ 
    make_spinner(province, db.getAll("SELECT * FROM province WHERE country_key=" + country.selected._key)); 
} 
void get_city() 
{ 
    make_spinner(city, db.getAll("SELECT * FROM city WHERE province_key=" + province.selected._key)); 
} 
void get_sub_area() 
{ 
    make_spinner(sub_area, db.getAll("SELECT * FROM sub_area WHERE city_key=" + city.selected._key)); 
} 


void make_spinner(_structure structure, List<class_location> location_list) 
{ 
    if (location_list.size() > 0) 
    { 
     class_location location_array[] = location_list.toArray(new class_location[location_list.size()]); 

     ArrayAdapter<?> adapter = new ArrayAdapter<Object>(this, android.R.layout.simple_spinner_item, location_array); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     structure.spinner.setAdapter(adapter); 
     structure.spinner.setVisibility(View.VISIBLE); 
     structure.textview.setVisibility(View.VISIBLE); 
    } 
    else 
    { 
     structure.spinner.setAdapter(null); 
     structure.spinner.setVisibility(View.GONE); 
     structure.textview.setVisibility(View.GONE); 
    } 

} 

ответ

0

Вы Hidding только один счетчик, не все из них просто потому, что вы устанавливаете видимость в make_spinner() и вы только проверить один шаг вниз на вашем onItemSelected (если еще строги). Чтобы это было ясно, ваш код устанавливает видимость или невидимость компонентов в методе, который никогда не вызывается для «других шагов вниз».

P.S .: Ваш код бесполезен и не следует правилам или рекомендациям Android. Это плохо. Попробуйте проверить некоторые рекомендации, помогите своим сотрудникам :)