Skip to content

Commit fe6d1ec

Browse files
author
Appyown
committed
Update
1 parent 63882bd commit fe6d1ec

20 files changed

+1531
-5
lines changed

Diff for: app/src/main/java/com/dvinfosys/WidgetsExample/Activity/HomeActivity.java

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.dvinfosys.WidgetsExample.Fragments.NumberCounterFragment;
2424
import com.dvinfosys.WidgetsExample.Fragments.ProgressViewFragment;
2525
import com.dvinfosys.WidgetsExample.Fragments.RadioButtonFragment;
26+
import com.dvinfosys.WidgetsExample.Fragments.SearchableSpinnerFragment;
2627
import com.dvinfosys.WidgetsExample.Fragments.SeekbarFragment;
2728
import com.dvinfosys.WidgetsExample.Fragments.SwitchFragment;
2829
import com.dvinfosys.WidgetsExample.Fragments.TextViewFragment;
@@ -122,6 +123,8 @@ public boolean onNavigationItemSelected(MenuItem item) {
122123
fragment = new ToggleButtonFragment();
123124
} else if (id == R.id.nav_folding_cell) {
124125
fragment = new FoldingCellFragment();
126+
} else if (id == R.id.nav_searchable_spinner) {
127+
fragment = new SearchableSpinnerFragment();
125128
} else if (id == R.id.nav_share) {
126129

127130
} else if (id == R.id.nav_send) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package com.dvinfosys.WidgetsExample.Adapter;
2+
3+
import android.content.Context;
4+
import android.text.TextUtils;
5+
import android.util.Log;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
import android.widget.BaseAdapter;
9+
import android.widget.Filter;
10+
import android.widget.Filterable;
11+
import android.widget.ImageView;
12+
import android.widget.TextView;
13+
14+
import com.dvinfosys.WidgetsExample.R;
15+
import com.dvinfosys.widgets.SearchableSpinner.interfaces.ISpinnerSelectedView;
16+
17+
import java.util.ArrayList;
18+
19+
public class SimpleListAdapter extends BaseAdapter implements Filterable, ISpinnerSelectedView {
20+
21+
private Context mContext;
22+
private ArrayList<String> mBackupStrings;
23+
private ArrayList<String> mStrings;
24+
private StringFilter mStringFilter = new StringFilter();
25+
26+
public SimpleListAdapter(Context context, ArrayList<String> strings) {
27+
mContext = context;
28+
mStrings = strings;
29+
mBackupStrings = strings;
30+
}
31+
32+
@Override
33+
public int getCount() {
34+
return mStrings == null ? 0 : mStrings.size() + 1;
35+
}
36+
37+
@Override
38+
public Object getItem(int position) {
39+
if (mStrings != null && position > 0)
40+
return mStrings.get(position - 1);
41+
else
42+
return null;
43+
}
44+
45+
@Override
46+
public long getItemId(int position) {
47+
if (mStrings == null && position > 0)
48+
return mStrings.get(position).hashCode();
49+
else
50+
return -1;
51+
}
52+
53+
@Override
54+
public View getView(int position, View convertView, ViewGroup parent) {
55+
View view = null;
56+
if (position == 0) {
57+
view = getNoSelectionView();
58+
} else {
59+
view = View.inflate(mContext, R.layout.view_list_item, null);
60+
TextView letters = view.findViewById(R.id.ImgVw_Letters);
61+
TextView dispalyName = view.findViewById(R.id.TxtVw_DisplayName);
62+
String FirstChar = mStrings.get(position - 1);
63+
String getFir = String.valueOf(FirstChar.charAt(0));
64+
letters.setText(getFir + "");
65+
dispalyName.setText(mStrings.get(position - 1));
66+
}
67+
return view;
68+
}
69+
70+
@Override
71+
public View getSelectedView(int position) {
72+
View view = null;
73+
if (position == 0) {
74+
view = getNoSelectionView();
75+
} else {
76+
view = View.inflate(mContext, R.layout.view_list_item, null);
77+
TextView letters = view.findViewById(R.id.ImgVw_Letters);
78+
TextView dispalyName = view.findViewById(R.id.TxtVw_DisplayName);
79+
String FirstChar = mStrings.get(position - 1);
80+
String getFir = String.valueOf(FirstChar.charAt(0));
81+
letters.setText(getFir + "");
82+
dispalyName.setText(mStrings.get(position - 1));
83+
}
84+
return view;
85+
}
86+
87+
@Override
88+
public View getNoSelectionView() {
89+
View view = View.inflate(mContext, R.layout.view_list_no_selection_item, null);
90+
return view;
91+
}
92+
93+
@Override
94+
public Filter getFilter() {
95+
return mStringFilter;
96+
}
97+
98+
public class StringFilter extends Filter {
99+
100+
@Override
101+
protected FilterResults performFiltering(CharSequence constraint) {
102+
final FilterResults filterResults = new FilterResults();
103+
if (TextUtils.isEmpty(constraint)) {
104+
filterResults.count = mBackupStrings.size();
105+
filterResults.values = mBackupStrings;
106+
return filterResults;
107+
}
108+
final ArrayList<String> filterStrings = new ArrayList<>();
109+
for (String text : mBackupStrings) {
110+
if (text.toLowerCase().contains(constraint)) {
111+
filterStrings.add(text);
112+
}
113+
}
114+
filterResults.count = filterStrings.size();
115+
filterResults.values = filterStrings;
116+
return filterResults;
117+
}
118+
119+
@Override
120+
protected void publishResults(CharSequence constraint, FilterResults results) {
121+
mStrings = (ArrayList) results.values;
122+
notifyDataSetChanged();
123+
}
124+
}
125+
126+
private class ItemView {
127+
public ImageView mImageView;
128+
public TextView mTextView;
129+
}
130+
131+
public enum ItemViewType {
132+
ITEM, NO_SELECTION_ITEM
133+
}
134+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package com.dvinfosys.WidgetsExample.Fragments;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v4.app.Fragment;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
import android.widget.Toast;
10+
11+
import com.dvinfosys.WidgetsExample.Adapter.SimpleListAdapter;
12+
import com.dvinfosys.WidgetsExample.R;
13+
import com.dvinfosys.widgets.SearchableSpinner.SearchableSpinner;
14+
import com.dvinfosys.widgets.SearchableSpinner.interfaces.IStatusListener;
15+
import com.dvinfosys.widgets.SearchableSpinner.interfaces.OnItemSelectedListener;
16+
17+
import java.util.ArrayList;
18+
19+
public class SearchableSpinnerFragment extends Fragment {
20+
21+
private SearchableSpinner mSearchableSpinner;
22+
private ArrayList<String> mStrings = new ArrayList<>();
23+
private SimpleListAdapter mSimpleListAdapter;
24+
25+
@Override
26+
public void onCreate(@Nullable Bundle savedInstanceState) {
27+
super.onCreate(savedInstanceState);
28+
initListValues();
29+
}
30+
31+
@Override
32+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
33+
View v = inflater.inflate(R.layout.fragment_searchable_spinner, container, false);
34+
mSimpleListAdapter = new SimpleListAdapter(getContext(), mStrings);
35+
mSearchableSpinner = v.findViewById(R.id.SearchableSpinner);
36+
mSearchableSpinner.setAdapter(mSimpleListAdapter);
37+
mSearchableSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
38+
@Override
39+
public void onItemSelected(View view, int position, long id) {
40+
Toast.makeText(getContext(), "Item on position " + position + " : " + mSimpleListAdapter.getItem(position) + " Selected", Toast.LENGTH_SHORT).show();
41+
}
42+
43+
@Override
44+
public void onNothingSelected() {
45+
Toast.makeText(getContext(), "Nothing Selected", Toast.LENGTH_SHORT).show();
46+
}
47+
});
48+
mSearchableSpinner.setStatusListener(new IStatusListener() {
49+
@Override
50+
public void spinnerIsOpening() {
51+
/*mSearchableSpinner1.hideEdit();
52+
mSearchableSpinner2.hideEdit();*/
53+
}
54+
55+
@Override
56+
public void spinnerIsClosing() {
57+
58+
}
59+
});
60+
61+
return v;
62+
}
63+
64+
private void initListValues() {
65+
mStrings = new ArrayList<>();
66+
mStrings.add("Brigida Kurz");
67+
mStrings.add("Tracy Mckim");
68+
mStrings.add("Iesha Davids");
69+
mStrings.add("Ozella Provenza");
70+
mStrings.add("Florentina Carriere");
71+
mStrings.add("Geri Eiler");
72+
mStrings.add("Tammara Belgrave");
73+
mStrings.add("Ashton Ridinger");
74+
mStrings.add("Jodee Dawkins");
75+
mStrings.add("Florine Cruzan");
76+
mStrings.add("Latia Stead");
77+
mStrings.add("Kai Urbain");
78+
mStrings.add("Liza Chi");
79+
mStrings.add("Clayton Laprade");
80+
mStrings.add("Wilfredo Mooney");
81+
mStrings.add("Roseline Cain");
82+
mStrings.add("Chadwick Gauna");
83+
mStrings.add("Carmela Bourn");
84+
mStrings.add("Valeri Dedios");
85+
mStrings.add("Calista Mcneese");
86+
mStrings.add("Willard Cuccia");
87+
mStrings.add("Ngan Blakey");
88+
mStrings.add("Reina Medlen");
89+
mStrings.add("Fabian Steenbergen");
90+
mStrings.add("Edmond Pine");
91+
mStrings.add("Teri Quesada");
92+
mStrings.add("Vernetta Fulgham");
93+
mStrings.add("Winnifred Kiefer");
94+
mStrings.add("Chiquita Lichty");
95+
mStrings.add("Elna Stiltner");
96+
mStrings.add("Carly Landon");
97+
mStrings.add("Hans Morford");
98+
mStrings.add("Shawanna Kapoor");
99+
mStrings.add("Thomasina Naron");
100+
mStrings.add("Melba Massi");
101+
mStrings.add("Sal Mangano");
102+
mStrings.add("Mika Weitzel");
103+
mStrings.add("Phylis France");
104+
mStrings.add("Illa Winzer");
105+
mStrings.add("Kristofer Boyden");
106+
mStrings.add("Idalia Cryan");
107+
mStrings.add("Jenni Sousa");
108+
mStrings.add("Eda Forkey");
109+
mStrings.add("Birgit Rispoli");
110+
mStrings.add("Janiece Mcguffey");
111+
mStrings.add("Barton Busick");
112+
mStrings.add("Gerald Westerman");
113+
mStrings.add("Shalanda Baran");
114+
mStrings.add("Margherita Pazos");
115+
mStrings.add("Yuk Fitts");
116+
}
117+
118+
}
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
android:orientation="vertical"
8+
tools:context=".Fragments.SearchableSpinnerFragment">
9+
10+
<com.dvinfosys.widgets.SearchableSpinner.SearchableSpinner
11+
android:id="@+id/SearchableSpinner"
12+
android:layout_width="match_parent"
13+
android:layout_height="wrap_content"
14+
android:layout_marginStart="24dp"
15+
android:layout_marginLeft="24dp"
16+
android:layout_marginTop="24dp"
17+
android:layout_marginEnd="24dp"
18+
android:layout_marginRight="24dp"
19+
android:gravity="center_horizontal"
20+
app:BoarderColor="@color/colorPrimary"
21+
app:BordersSize="1dp"
22+
app:RevealEmptyText="Touch to select"
23+
app:ShowBorders="false"
24+
app:SpinnerExpandHeight="250dp" />
25+
26+
</LinearLayout>

Diff for: app/src/main/res/layout/view_list_item.xml

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="wrap_content"
5+
android:layout_height="wrap_content"
6+
android:paddingTop="4dp"
7+
android:paddingBottom="4dp"
8+
android:paddingRight="4dp"
9+
android:paddingLeft="8dp"
10+
android:orientation="horizontal"
11+
app:layout_collapseMode="parallax"
12+
app:layout_collapseParallaxMultiplier="0.5">
13+
14+
<TextView
15+
android:id="@+id/ImgVw_Letters"
16+
android:layout_width="32dp"
17+
android:text="A"
18+
android:gravity="center"
19+
android:layout_height="32dp"/>
20+
21+
<TextView
22+
android:id="@+id/TxtVw_DisplayName"
23+
android:layout_width="wrap_content"
24+
android:layout_height="wrap_content"
25+
android:layout_marginLeft="8dp"
26+
android:layout_gravity="center_vertical"/>
27+
28+
</LinearLayout>
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="wrap_content"
5+
android:layout_height="wrap_content"
6+
android:paddingTop="8dp"
7+
android:paddingBottom="8dp"
8+
android:paddingRight="4dp"
9+
android:paddingLeft="8dp"
10+
android:orientation="horizontal"
11+
app:layout_collapseMode="parallax"
12+
app:layout_collapseParallaxMultiplier="0.5">
13+
14+
<TextView
15+
android:id="@+id/TxtVw_NoSelection"
16+
android:layout_width="wrap_content"
17+
android:layout_height="wrap_content"
18+
android:layout_marginLeft="8dp"
19+
android:layout_gravity="center_vertical"
20+
android:text="@string/no_selection"/>
21+
</LinearLayout>

Diff for: app/src/main/res/menu/activity_home_drawer.xml

+7-3
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,18 @@
6262
android:icon="@drawable/ic_progressview"
6363
android:title="@string/menu_progressview" />
6464
<item
65-
android:id="@+id/nav_color_picker"
66-
android:icon="@drawable/ic_color_picker"
67-
android:title="@string/menu_color_picker" />
65+
android:id="@+id/nav_color_picker"
66+
android:icon="@drawable/ic_color_picker"
67+
android:title="@string/menu_color_picker" />
6868

6969
<item
7070
android:id="@+id/nav_folding_cell"
7171
android:title="@string/menu_folding_cell" />
7272

73+
<item
74+
android:id="@+id/nav_searchable_spinner"
75+
android:title="@string/menu_searchable_spinner" />
76+
7377
</group>
7478

7579
<item android:title="Communicate">

Diff for: app/src/main/res/values/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,7 @@
6464
<string name="content_to1_mock">46th Ave</string>
6565
<string name="content_to2_mock">Woodside, NY 11101</string>
6666
<string name="title_activity_main2">Main2Activity</string>
67+
<string name="menu_searchable_spinner">Searchable Spinner</string>
68+
<string name="no_selection">No Selection</string>
6769

6870
</resources>

0 commit comments

Comments
 (0)