From 170050406c506c1ab4da54377895d0bef93674f5 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Sun, 23 Sep 2018 14:10:01 +0200 Subject: [PATCH] search toolbar added, need to connect with API --- app/build.gradle | 8 ++ app/src/main/AndroidManifest.xml | 6 +- .../uam/wmi/findmytutor/ListViewAdapter.java | 109 ++++++++++++++++++ .../findmytutor/activity/MainActivity.java | 76 ++++++++++++ app/src/main/res/drawable/bg_actionbar.xml | 8 ++ app/src/main/res/drawable/ic_menu_search.xml | 13 +++ app/src/main/res/layout/activity_main.xml | 11 +- app/src/main/res/layout/app_bar_main.xml | 49 +++----- app/src/main/res/layout/content_main.xml | 13 ++- app/src/main/res/layout/item_listview.xml | 24 ++++ app/src/main/res/menu/menu_main.xml | 11 ++ app/src/main/res/values-v21/styles.xml | 11 +- app/src/main/res/values/colors.xml | 3 +- app/src/main/res/values/styles.xml | 27 ++--- 14 files changed, 311 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/ListViewAdapter.java create mode 100644 app/src/main/res/drawable/bg_actionbar.xml create mode 100644 app/src/main/res/drawable/ic_menu_search.xml create mode 100644 app/src/main/res/layout/item_listview.xml create mode 100644 app/src/main/res/menu/menu_main.xml diff --git a/app/build.gradle b/app/build.gradle index a333d4f..6f6f95d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,6 +22,12 @@ android { } } +repositories{ + maven { + url 'http://dl.bintray.com/amulyakhare/maven' + } +} + dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' @@ -45,4 +51,6 @@ dependencies { implementation "com.squareup.okhttp3:okhttp:3.11.0" implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0" implementation "com.squareup.okhttp3:logging-interceptor:3.11.0" + implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' + } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 83e6896..5f227e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,17 +13,17 @@ + android:theme="@style/AppTheme"> + android:launchMode="singleInstance" + android:theme="@style/AppTheme.NoActionBar"> diff --git a/app/src/main/java/com/uam/wmi/findmytutor/ListViewAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/ListViewAdapter.java new file mode 100644 index 0000000..8fd91a7 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/ListViewAdapter.java @@ -0,0 +1,109 @@ +package com.uam.wmi.findmytutor; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; + +import com.uam.wmi.findmytutor.activity.MainActivity; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class ListViewAdapter extends ArrayAdapter { + + + private MainActivity activity; + private List friendList; + private List searchList; + + public ListViewAdapter(MainActivity context, int resource, List objects) { + super(context, resource, objects); + this.activity = context; + this.friendList = objects; + this.searchList = new ArrayList<>(); + this.searchList.addAll(friendList); + } + + @Override + public int getCount() { + return friendList.size(); + } + + @Override + public String getItem(int position) { + return friendList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); + // If holder not exist then locate all view from UI file. + if (convertView == null) { + // inflate UI from XML file + convertView = inflater.inflate(R.layout.item_listview, parent, false); + // get all UI view + holder = new ViewHolder(convertView); + // set tag for holder + convertView.setTag(holder); + } else { + // if holder created, get tag from view + holder = (ViewHolder) convertView.getTag(); + } + + holder.friendName.setText(getItem(position)); + + //get first letter of each String item + String firstLetter = String.valueOf(getItem(position).charAt(0)); + + ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT + // generate random color + int color = generator.getColor(getItem(position)); + + TextDrawable drawable = TextDrawable.builder() + .buildRound(firstLetter, color); // radius in px + + holder.imageView.setImageDrawable(drawable); + + return convertView; + } + + // Filter method + public void filter(String charText) { + charText = charText.toLowerCase(Locale.getDefault()); + friendList.clear(); + if (charText.length() == 0) { + friendList.addAll(searchList); + } else { + for (String s : searchList) { + if (s.toLowerCase(Locale.getDefault()).contains(charText)) { + friendList.add(s); + } + } + } + notifyDataSetChanged(); + } + + private class ViewHolder { + private ImageView imageView; + private TextView friendName; + + public ViewHolder(View v) { + imageView = (ImageView) v.findViewById(R.id.image_view); + friendName = (TextView) v.findViewById(R.id.text); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java index 588c47a..ae968c0 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MainActivity.java @@ -14,18 +14,27 @@ import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.SearchView; +import android.text.TextUtils; +import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.widget.AdapterView; import android.widget.FrameLayout; import android.support.v7.widget.Toolbar; +import android.widget.ListView; +import android.widget.Toast; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.maps.MapView; +import com.uam.wmi.findmytutor.ListViewAdapter; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.service.CoordinateService; + +import java.util.ArrayList; import java.util.List; @@ -49,6 +58,11 @@ public class MainActivity extends AppCompatActivity { this.coordinates = coordinates; } + // 4 search + private ListView listView; + private ArrayList stringArrayList; + private ListViewAdapter adapter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -61,9 +75,26 @@ public class MainActivity extends AppCompatActivity { } private void configureconfigureNavigationDrawer() { + listView = (ListView) findViewById(R.id.list_item); Toolbar toolbar = findViewById(R.id.toolbar_main); setSupportActionBar(toolbar); + //***/ + + setData(); + adapter = new ListViewAdapter(this, R.layout.item_listview, stringArrayList); + listView.setAdapter(adapter); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Toast.makeText(MainActivity.this, (String)parent.getItemAtPosition(position), Toast.LENGTH_SHORT).show(); + } + }); + + + //***/ + drawerLayout = findViewById(R.id.drawer_layout); actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); @@ -144,6 +175,51 @@ public class MainActivity extends AppCompatActivity { }); } + // mock 4 search bar + private void setData() { + stringArrayList = new ArrayList<>(); + stringArrayList.add("Quynh Trang"); + stringArrayList.add("Hoang Bien"); + stringArrayList.add("Duc Tuan"); + stringArrayList.add("Dang Thanh"); + stringArrayList.add("Xuan Luu"); + stringArrayList.add("Phan Thanh"); + stringArrayList.add("Kim Kien"); + stringArrayList.add("Ngo Trang"); + stringArrayList.add("Thanh Ngan"); + stringArrayList.add("Nguyen Duong"); + stringArrayList.add("Quoc Cuong"); + stringArrayList.add("Tran Ha"); + stringArrayList.add("Vu Danh"); + stringArrayList.add("Minh Meo"); + } + + @Override + public boolean onCreateOptionsMenu( Menu menu) { + getMenuInflater().inflate( R.menu.menu_main, menu); + + MenuItem myActionMenuItem = menu.findItem( R.id.action_search); + final SearchView searchView = (SearchView) myActionMenuItem.getActionView(); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + if (TextUtils.isEmpty(newText)) { + adapter.filter(""); + listView.clearTextFilter(); + } else { + adapter.filter(newText); + } + return true; + } + }); + + return true; + } @Override protected void onPostCreate(Bundle savedInstanceState) { diff --git a/app/src/main/res/drawable/bg_actionbar.xml b/app/src/main/res/drawable/bg_actionbar.xml new file mode 100644 index 0000000..d50e9c9 --- /dev/null +++ b/app/src/main/res/drawable/bg_actionbar.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_search.xml b/app/src/main/res/drawable/ic_menu_search.xml new file mode 100644 index 0000000..293a5f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_search.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0e791fa..3c379fb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,18 +10,13 @@ android:visibility="visible" tools:openDrawer="start"> - - + app:menu="@menu/activity_main_drawer"> @@ -72,6 +67,10 @@ app:layout_anchorGravity="bottom|center" app:menu="@menu/nav_items" /> + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index f4a7ba4..9e7994d 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -1,37 +1,22 @@ - + android:layout_height="wrap_content" + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + android:layout_marginTop="5dp" + android:background="@android:color/transparent" + android:elevation="0dp" + android:theme="@style/AppTheme.AppBarOverlay"> - - - - - - - - - - - - - - \ No newline at end of file + android:layout_height="match_parent" + android:background="@drawable/bg_actionbar" + android:elevation="4dp" + android:padding="10dp" + app:popupTheme="@style/AppTheme.PopupOverlay" /> + diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 0be3b43..9f9df82 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -1,11 +1,20 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_listview.xml b/app/src/main/res/layout/item_listview.xml new file mode 100644 index 0000000..6a9a4d1 --- /dev/null +++ b/app/src/main/res/layout/item_listview.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml new file mode 100644 index 0000000..3d964f2 --- /dev/null +++ b/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 7abc06d..c78981e 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -1 +1,10 @@ - + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2361e98..387faef 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,7 +2,7 @@ #3F51B5 #303F9F - #FF4081 + #9ef13f #999 #89c3c3c3 #858585 @@ -10,6 +10,7 @@ #ffffff + #ffffff #80ffffff diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0e856e1..31ff20c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,20 +1,21 @@ - + - + -