2015-10-04 3 views
1

Я хочу создать три счетчика. В первом Spinner мне нужно отобразить название страны и в соответствии с выбором названия страны, я должен загрузить имя штата этой страны во втором Spinner и, согласно выбору штата, мне нужно загрузить название города этого состояния в Third Spinner , Может ли кто-нибудь опубликовать какой-либо пример и, пожалуйста, предположите, какой метод лучше определяет данные счетчика в Java или Xml.Создание динамического Spinner в Android

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item, locations); 
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
s.setAdapter(dataAdapter); 

ответ

3

Layout XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<!-- Label --> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="8dip" 
    android:text="@string/lblAcc" /> 

<!-- Spinner Dropdown --> 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="8dip" 
    android:layout_marginRight="8dip" 
    android:layout_marginTop="10dip" 
    android:entries="@array/acc_type" /> 

<!-- Select Label --> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="8dip" 
    android:text="@string/lblSubAcc" /> 

<!-- Spinner Dropdown --> 
<Spinner 
    android:id="@+id/spinner2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dip" 
    android:layout_marginLeft="8dip" 
    android:layout_marginRight="8dip" 
/> 

ресурсов XML должен быть как следующий

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<string name="app_name">Spinner Example</string> 
<string name="action_settings">Settings</string> 
<string name="lblAcc">Select Account Type</string> 
<string name="lblSubAcc">Select Account Head</string> 

<string-array name="acc_type"> 
    <item>Income</item> 
    <item>Expense</item> 
</string-array> 

</resources> 

и класс Java для использования

public class SpinnerEx4Activity extends Activity implements 
OnItemSelectedListener{ 
Spinner s1,s2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_spinner_ex4); 
    s1 = (Spinner)findViewById(R.id.spinner1); 
    s2 = (Spinner)findViewById(R.id.spinner2); 
    s1.setOnItemSelectedListener(this); 
} 
@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
     long arg3) { 
    // TODO Auto-generated method stub 
    String sp1= String.valueOf(s1.getSelectedItem()); 
    Toast.makeText(this, sp1, Toast.LENGTH_SHORT).show(); 
    if(sp1.contentEquals("Income")) { 
     List<String> list = new ArrayList<String>(); 
     list.add("Salary");//You should add items from db here (first spinner) 

     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, list); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dataAdapter.notifyDataSetChanged(); 
     s2.setAdapter(dataAdapter); 
    } 
    if(sp1.contentEquals("Expense")) { 
     List<String> list = new ArrayList<String>(); 
     list.add("Conveyance");//you should add items from db here(2nd spinner) 

     ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, list); 
      dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dataAdapter2.notifyDataSetChanged(); 
     s2.setAdapter(dataAdapter2); 
    } 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 

С помощью другой лестницы вы можете добавить больше прядильщика, как 3-й счетчик, в зависимости от 2-го и так далее.

+0

Большое спасибо Zahan –

+0

Я хочу сохранить массив городов. можете ли вы предложить, где я должен поддерживать либо в xml, либо в java. или я должен позвонить ему из базы данных.? –

+0

Если его динамика, вы должны поддерживать базу данных. Но если это не динамическое действие, это в java. Чтобы вы могли управлять вещами в коде. Не нужно перемещаться в xml, чтобы постоянно менять вещи. @PratikSule –