Skip to content Skip to sidebar Skip to footer

How To Add Default Text In Spinner?

I am new to android,I know access of spinner but I want to add default text in spinner and want set lay out like below image,can any one help me with this, final String[] item

Solution 1:

My suggestion for your case is use Button initially set text and set gravity (not layout_gravity) to left|center_vertical instead of opening an AlertDialog open a PopupWindow set that Button as anchor of that PopUpWindow. In that PopUpWindow place a ListView and in OnItemClick change text with selected value in that Button using setText(java.lang.CharSequence)

code snippet

XML for that Button

<Button
    android:id="@+id/propertyBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="@dimen/dp_4"
    android:background="@drawable/property_btn_large"
    android:ellipsize="marquee"
    android:gravity="left|center_vertical"
    android:marqueeRepeatLimit="marquee_forever"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="showPropertyPopUp"
    android:paddingLeft="42dp"
    android:paddingRight="22dp"
    android:shadowColor="@android:color/white"
    android:shadowDx="1"
    android:shadowDy="1"
    android:shadowRadius="1"
    android:text="@string/select_property" />

Java code for opening PopUpWindow in that Button click

//don't forget to initialize that button in onCreate(...)publicvoidshowPropertyPopUp(View v) {
        propertyList = dbHelper.getAllProperties();
        dbHelper.closeDB();

        if(propertyList != null && propertyList.size() > 0) {
            LayoutInflaterinflater= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            ViewpopUpView= inflater.inflate(R.layout.pop_up, null, false);
            Bitmapbitmap= BitmapFactory.decodeResource(getResources(),
                    R.drawable.select_dropdown);
            popupWindowProperty = newPopupWindow(popUpView, propertyBtn.getWidth(),
                    300, true);         
            popupWindowProperty.setContentView(popUpView);
            popupWindowProperty.setBackgroundDrawable(newBitmapDrawable(getResources(),
                    bitmap));
            popupWindowProperty.setOutsideTouchable(true);
            popupWindowProperty.setFocusable(true);
            popupWindowProperty.showAsDropDown(propertyBtn, 0, 0);
            ListViewdropdownListView= (ListView) popUpView.
                    findViewById(R.id.dropdownListView);
            PropertyDropdownAdapteradapter=newPropertyDropdownAdapter(
                    AddIncomeActivity.this, 
                    R.layout.row_pop_up_list, propertyList);
            dropdownListView.setAdapter(adapter);
            dropdownListView.setOnItemClickListener(this);
        }   
    }

code for setting text on that Button in OnItemClick

PropertyInfoaddPropertyInfo= propertyList.get(position);
StringpropertyName= addPropertyInfo.getPropertyName();
propertyBtn.setText(propertyName);
popupWindowProperty.dismiss();

pop_up layout

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ListViewandroid:id="@+id/dropdownListView"android:layout_width="match_parent"android:layout_height="match_parent"android:cacheColorHint="@null"android:fadeScrollbars="false" ></ListView></LinearLayout>

Screenshot on clicking on that Button

enter image description here

Screenshot after item click of ListViewenter image description here

Solution 2:

Add one more element in array which you are passing in spinner and if you want to add validation you can check it by runtime using -

if (spnType.getSelectedItemPosition() == 0) {
            View view = spnType.getSelectedView();
              SpinnerView adapter = (SpinnerView) spnType.getAdapter();
            adapter.setError(view, getString(R.string.err_leadtype));
            returnfalse;
        } else {
            strType = arllistType.get(spnType.getSelectedItemPosition()).get(
                    WebServiceResponseParameter.LIST_VALUE);
        }

Solution 3:

As Nitish explained, You need to add default value on top of your array R.array.day_birthdate. Suppose you your array is day_birthdate then add day in top where you define

<string-arrayname="day_birthdate"><itemname="0">day</item><itemname="1">1</item>
        ...
</string-array>

Add validaton on Spinner, if option first is selected then,

if (mSpinnerBirthDate.getSelectedItemPosition() == 0) { //where mSpinnerBirthDate is Spinner for Birthdate//show invalid selection message       
}else{
//get selected value from spinner
}

Solution 4:

Add one more element in array which you are passing in spinner and then write this code in java file.

Stringarray[]=getResources().getStringArray(R.array.name_Of_array);

ArrayAdapter<String> ad=new ArrayAdapter<String>(this,layoutid, array);
spinner.setAdapter(ad);     

Solution 5:

You can not do that, for that you have to create custom spinner or you have to show alertdialog as a action when text view is clicked.

Edited :

Create a array

String a [] = newString [4] ;
a[0] = "ram";
a[1] = "shyam";
a[2] = "mohan";
a[3] = "krishna";

use this array as a source of listview data, now as a action listview will be displayed and set a listener for listview which will provide you a position of clicked item in the listview,

use that position for array[position], lets position = 2, then clicked item text will be mohan set this text as a item of textview .

Edited 2:

Create custom Dialog with listview inside it. set onItemClickListener in listview.

onCreate  
{
     dayTextView.setText("day");
}

onItemClickListener ()
{
     dayTextView.setText("Sunday");
}

Edited 3 :

Follow this tutorial for custom dilaog : http://rajeshvijayakumar.blogspot.in/2013/04/alert-dialog-dialog-with-item-list.html

Post a Comment for "How To Add Default Text In Spinner?"