Tuesday, November 15, 2011

Adding dynamic data to spinners (Android)

Many a times we find that it becomes quite hard to work with some simplest looking stuffs, and then we try to find out the hardest possible ways for working with them.

I wont say its easiest but yeah its quite handy for people who wanna show dynamic data in a Spinner widget in Android.

1. You are using ArrayList<DataType> dynamicData;
2. You have overriden toString function in your data class which holds the dynamic data.
class DataType{
   String spinnerElement; 

   public String toString(){
        return spinnerElement;
3. You know Android development :D

Object[] items = dynamicData.toArray();
String[] elements= new String[items.length + 1];
for (int iTemp = 0; iTemp < items.length + 1; iTemp++) {
if (i == 0) {
elements[i] = "Please select";
} else {
elements[i] = ((DataType) items[i - 1]).toString();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_item, prices);

// you can also use the default android.R.layout.single_line_spinner
// In order to support multi-line selection i have modified the source of default.

arrayAdapter .setDropDownViewResource(R.layout.single_line_spinner);
((Spinner) findViewById(R.id.mySpinner)).setAdapter(arrayAdapter );

//////////////////////////////////////////////////////////////////////////THATS IT /////////////////////////////////////////////////////////////////

Do not modify this source as the spinner uses this id only

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:ellipsize="marquee" />

Let me know what you think about it or if have any better idea for the same.

No comments: