Android tutorial

Android Searchable Spinner Example

Hiii Everyone in this example I am sharing how to use Serch view in Spinner.  In Android used a dropdown list with Spinner to show a list of data in dropdown throw API. So In this tutorial, I am implementing and Spiner with search View.

In this example implement Searchablespinner GitHub Library to use an easy way for search view in a spinner.

Android Searchable Spinner Example

https://www.youtube.com/watch?v=xSNkG3P_tNo

Step 1: Add a Searchable Spinner Library in your build.gradle.  

compile 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1'
compile 'com.android.volley:volley:1.0.0'

Step 2:  Open Your activity.xml file and add these.

In your XML file used searchablespinner view in and create a UI.

<com.toptoche.searchablespinnerlibrary.SearchableSpinner
    android:id="@+id/spinnerPart"
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:background="@drawable/editbox"
    android:layout_height="40dp" />

Step 3: Open Your Activity Java file and Implement it.

In your java file add spinner and implement it and Call API for getting data using volley library. and set data in Spinner

public class Main extends AppCompatActivity{

private Spinner PartSpinner;
List<String> PartName;
List<String> PartId;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
  
   PartSpinner=(Spinner)findViewById(R.id.spinnerPart);
   PartName=new ArrayList<>();
   PartId=new ArrayList<>();
  }

     private void PartList() {
        final ProgressDialog loading = new ProgressDialog(CompleteCondition.this);
        loading.setMessage("Please Wait...");
        loading.show();
        StringRequest stringRequest = new StringRequest(Request.Method.POST, ConfiURL.Parts_List_URl,
        new Response.Listener<String>() {
             
           @Override
            public void onResponse(String response) {
                  try {
                   Log.d("JSON", response);
                    loading.dismiss();
                     JSONObject eventObject = new JSONObject(response);
                     String error_status=eventObject.getString("error");
                      if(error_status.equals("true")){
                       String error_msg=eventObject.getString("msg");
                       Toast.makeText(CompleteCondition.this, error_msg, Toast.LENGTH_SHORT).show();
                         }
                          else{
                          Resouces(eventObject);
                           }
                            } catch (Exception e) {
                              Log.d("Tag",e.getMessage());

                               }
                                }
                              },

                             new Response.ErrorListener() {
                                 @Override
                                public void onErrorResponse(VolleyError error) {
                                loading.dismiss();
                                Toast.makeText(CompleteCondition.this,error.toString(), Toast.LENGTH_LONG ).show();

                                 }
                               }){
                         @Override
                        protected Map<String, String> getParams() throws AuthFailureError {
                          Map<String,String> map = new HashMap<String,String>();
                            return map;
                                }
                              };

                         RequestQueue requestQueue = Volley.newRequestQueue(this);
                         requestQueue.add(stringRequest);
                       }
                     /*hare to pares the json response in list and show to spener*/
                       public void Resouces(JSONObject Ward) {
                        String Resourc_Name;
                        String ResourceID;
                         PartName.clear();
                         PartId.clear();
                         PartName.add("Select Part");
                         PartId.add("Select Part");
                        try {
                         JSONArray projectNameArray = Ward.getJSONArray("Available Parts");
                          for (int i = 0; i <= projectNameArray.length(); i++) {
                           JSONObject obj = projectNameArray.getJSONObject(i);
                            Resourc_Name = obj.getString("part_name");
                              ResourceID = obj.getString("part_id");
                              Log.d("name", Resourc_Name);
                              PartName.add(Resourc_Name);
                              PartId.add(ResourceID);

                              //Log.d("Dropdown",Dropdown.get(i));
                              }
                              } catch (Exception e) {
                              e.printStackTrace();
                              }
                            ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, PartName);
                             PartSpinner.setAdapter(adapter);
                              PartSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                         @Override
                        public void onItemSelected(AdapterView<?> adapter, View v, int position, long id) {
                       // On selecting a spinner item
                       ((TextView) adapter.getChildAt(0)).setTextColor(Color.BLACK);
                        Part_Id = PartId.get(position);

                         }

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