开发者

Change items of a Spinner on item click of another Spinner in android

开发者 https://www.devze.com 2023-04-03 21:39 出处:网络
I have a question that, I want to load items in a spinner on ItemClick of another Spinner. Actually I two spinners, data is loaded i开发者_JAVA百科nto first spinner from json_parsing and I have to loa

I have a question that, I want to load items in a spinner on ItemClick of another Spinner. Actually I two spinners, data is loaded i开发者_JAVA百科nto first spinner from json_parsing and I have to load data in second Spinner after selecting an item from first spinner, So, I don't know how it will implemented? Please suggest me the right solution.

Thanks in advance.


You can do it like this,

First time you data will be loaded in First and Second Spinner. On Selection of item from First Spinner do this.

1.) Clear the previous ArrayList or Array whateven you have passed the 
                                                                 Second Spinner.
2.) Fill the ArrayList or Array of new data & Update the Second Spinnner using
    adapter.notifyDataSetChanged();
    second_spinner.setSelection(0);


First Set an OnItemClickListner for your First Spinner. In the OnItemClickListner Method first parse your XML. After completing XML parsing, set parsed data to the adapter and set that adapter with your second spinner


Set an OnItemClickListener on your first spinner that would prepare and set the adapter to the second spinner.


Here is a more complete code example:

Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
Cursor c1 = (some code for getting a cursor from an data source, for example, a sqlite database)
SimpleCursorAdapter adapter1 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c1, new String[]{"column_name"}, new int[]{android.R.id.text1});
spinner1.setAdapter(adapter1);

Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
Cursor c2 = (some code for getting a cursor from an data source, for example, a sqlite database)
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c2, new String[]{"column_name"}, new int[]{android.R.id.text1});
spinner2.setAdapter(adapter2);

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Cursor c_new = (create a new cursor); 
    adapter2.changeCursor(c_new);               
    adapter2.notifyDataSetChanged(); // this is important for notifying the UI
    spinner2.setAdapter(adapter2);
    }
});

What you do is set a listener to the first Spinner, there change the Cursor of the second Adapter to a new one, notify the UI and reset the Adapter of the second Spinner.

0

精彩评论

暂无评论...
验证码 换一张
取 消