Madhu
Madhu

Reputation: 21

How to display the vaule(dependent value) when we select one item form the list of values in Android SDK?

Am new to this Android SDK platform,so could you people help me out to solve my issue. so lets discuss brief about my issue, am developing small application in which am using sppiner to list all country states and zip codes so my question is when i select one country state in a list it should automatically populate and display its corresponding zip code

below is my main.xml file

 android:layout_centerHorizontal="true"
 android:layout_marginTop="2dp"
 android:padding="12dip"
 android:layout_height="40dip"
 android:layout_marginRight="20dip"
 />

here is my Activity class

import android.app.Activity;

import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener;

public class EriePremium extends Activity { /** Called when the activity is first created. */

@SuppressWarnings("unchecked") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

    Spinner s = (Spinner) findViewById(R.id.spinner); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.States, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s.setAdapter(adapter);

Spinner s1 = (Spinner) findViewById(R.id.spinner1); 
ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this, R.array.Zip, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter1); 
}

}

and my array list array.xml file

Alabama Alaska
American Samoa
Arizona
Arkansas
California
Colorado
Connecticut
Delaware District of Columbia
Florida
Georgia
Guam
Hawaii
Idaho
Illinois

1001
1002
1003
1004
1005
1006
1007
1008 1009
1010
1011
1012
1013
1014
1015
1016

Awaiting for response

Thanks in advance, Madhu

Upvotes: 2

Views: 451

Answers (1)

Jon Goodwin
Jon Goodwin

Reputation: 9153

This is tested and (works bi-directionally)

EriePremium.java

package com.example.statezip;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;


public class EriePremium extends Activity 
{

public Spinner zipspinner,statespinner;


protected void onCreate(Bundle mbfSplash) 
{
        super.onCreate(mbfSplash);
        setContentView(R.layout.main);
        setupZip();
        setupState();

}

public void setupZip() 
{

    zipspinner = (Spinner) findViewById(R.id.zipspinner);
//  List<String> ziplist = new ArrayList<String>();
    ArrayAdapter<CharSequence> zipAdapter = ArrayAdapter.createFromResource(this, R.array.zip, android.R.layout.simple_spinner_item);
    zipAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    zipspinner.setAdapter(zipAdapter);
    zipspinner.setOnItemSelectedListener(new zipOnClickListener());
}
private void setupState()
{
    statespinner = (Spinner) findViewById(R.id.statespinner);
//    List<String> statelist = new ArrayList<String>();
    ArrayAdapter<CharSequence> stateAdapter = ArrayAdapter.createFromResource(this, R.array.state, android.R.layout.simple_spinner_item);
    stateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    statespinner.setAdapter(stateAdapter);
    statespinner.setOnItemSelectedListener(new stateOnClickListener());
}

    public class stateOnClickListener implements OnItemSelectedListener 
    {
        @Override public void onItemSelected(AdapterView<?> parent, View v, int pos,long id) 
        {
             zipspinner.setSelection(pos);//parent.getItemAtPosition(pos)
        }



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

        }
    }
    public class zipOnClickListener implements OnItemSelectedListener 
    {
        @Override public void onItemSelected(AdapterView<?> parent, View v, int pos,long id) 
        {
            statespinner.setSelection(pos);//parent.getItemAtPosition(pos)
        }



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

        }
    }
}//class

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:gravity="top|left" >

    <TextView
        android:id="@+id/title"
        android:layout_width="130dp"
        android:layout_height="50dp"
        android:gravity="center"
        android:text="@string/title"
        android:textSize="30dp" />

    <Spinner
        android:id="@+id/statespinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/title"
        android:entries="@array/state"
        android:prompt="@string/state" />

    <Spinner
        android:id="@+id/zipspinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/statespinner"
        android:entries="@array/zip"
        android:prompt="@string/zip" />

</RelativeLayout>

TemoActivity.java

strings.xml

<string name="zip">zip</string>
<string name="state">state</string>
<string name="title">state/zip</string>

<string-array name="state">
<item>Alabama Alaska</item>
<item>American Samoa</item>
<item>Arizona</item>
<item>Arkansas</item>
<item>California</item>
<item>Colorado</item>
<item>Connecticut</item>
<item>Delaware District of Columbia</item>
<item>Florida</item>
<item>Georgia</item>

..... < /string-array>

<string-array name="zip">
<item>1001</item>
<item>1002</item>
<item>1003</item>
<item>1004</item>
<item>1005</item>
<item>1006</item>
<item>1007</item>
<item>1008 1009</item>
<item>1010</item>
<item>1011</item>

...... < /string-array>

Upvotes: 0

Related Questions