Friday 29 June 2018

Like spinner view to add dyanamic data or list to search data and filter item and select the item from list and show in edittext

Like spinner view to add dynamic data or list to search data and filter item and select the item from list and show in Edittext


1: MainActivity.java


package abhiandroidknowledge.blogspot.com.spinnersearchitem;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ArrayList<String> items = new ArrayList<>();
private ListView listView;
private TextView tvCity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addItems();
tvCity = (TextView) findViewById(R.id.txt_result);
findViewById(R.id.et_spinner_city).setOnClickListener(this);
}
private void addItems() {
items.add("Mumbai");
items.add("Delhi");
items.add("Bengaluru");
items.add("Hyderabad");
items.add("Ahmedabad");
items.add("Chennai");
items.add("Kolkata");
items.add("Surat");
items.add("Pune");
items.add("Jaipur");
items.add("Lucknow");
items.add("Kanpur");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.et_spinner_city:
showSpinnerDialog();
break;
default:
break;
}
}
private void showSpinnerDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(R.layout.search_dialog);
builder.setCancelable(true);
final AlertDialog alertDialog;
alertDialog = builder.create();
alertDialog.show();
listView = (ListView) alertDialog.findViewById(R.id.list);
final EditText searchCity = (EditText) alertDialog.findViewById(R.id.searchcity);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
findViewById(R.id.et_spinner_city).setOnClickListener(this);
listView.setAdapter(adapter);
TextView close = (TextView) alertDialog.findViewById(R.id.close);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
alertDialog.dismiss();
Toast.makeText(MainActivity.this, adapter.getItem(position).toString(), Toast.LENGTH_SHORT).show();
tvCity.setText(adapter.getItem(position).toString());
}
});
searchCity.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
adapter.getFilter().filter(searchCity.getText().toString().trim());
}
});
}
}


2:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="abhiandroidknowledge.blogspot.com.spinnersearchitem.MainActivity">
<EditText
android:id="@+id/et_spinner_city"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/rounded_edit_text"
android:drawableRight="@drawable/ic_keyboard_arrow_down_black_24dp"
android:hint="Select City" />
<TextView
android:id="@+id/txt_result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
android:textColor="#000000" />
</LinearLayout>

3: search_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="15dp"
android:gravity="center_vertical"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/spinerTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select or Search City"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:clickable="true"
android:gravity="right"
android:padding="5dp"
android:text="Close" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|left"
android:orientation="horizontal">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_search_black_36dp" />
<EditText
android:id="@+id/searchcity"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="5dp"
android:background="#ffffff"
android:inputType="text" />
</LinearLayout>
<View
android:layout_width="wrap_content"
android:layout_height="0.1dp"
android:background="#d1d1d1" />
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="300dp"
android:divider="#d1d1d1"
android:dividerHeight="0.1dp"></ListView>
</LinearLayout>
</LinearLayout> Thankx.