Created
May 28, 2016 10:02
-
-
Save ManzzBaria/0b28b360b67d9a701eda8ef515928a91 to your computer and use it in GitHub Desktop.
SearchView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.vs2.workers; | |
import android.animation.Animator; | |
import android.annotation.TargetApi; | |
import android.app.SearchManager; | |
import android.app.SearchableInfo; | |
import android.content.Context; | |
import android.content.res.Resources; | |
import android.content.res.TypedArray; | |
import android.graphics.Color; | |
import android.graphics.drawable.AnimatedVectorDrawable; | |
import android.os.Build; | |
import android.os.Bundle; | |
import android.support.design.widget.CoordinatorLayout; | |
import android.support.design.widget.FloatingActionButton; | |
import android.support.design.widget.Snackbar; | |
import android.support.v4.view.MenuItemCompat; | |
import android.support.v7.app.ActionBar; | |
import android.support.v7.app.AppCompatActivity; | |
import android.support.v7.widget.LinearLayoutManager; | |
import android.support.v7.widget.RecyclerView; | |
import android.support.v7.widget.SearchView; | |
import android.support.v7.widget.Toolbar; | |
import android.text.Editable; | |
import android.text.Html; | |
import android.text.TextWatcher; | |
import android.util.Log; | |
import android.util.TypedValue; | |
import android.view.Gravity; | |
import android.view.LayoutInflater; | |
import android.view.Menu; | |
import android.view.MenuInflater; | |
import android.view.MenuItem; | |
import android.view.View; | |
import android.view.ViewAnimationUtils; | |
import android.view.ViewGroup; | |
import android.view.animation.AnimationUtils; | |
import android.view.animation.Interpolator; | |
import android.view.inputmethod.EditorInfo; | |
import android.widget.EditText; | |
import android.widget.ImageView; | |
import android.widget.LinearLayout; | |
import android.widget.RelativeLayout; | |
import android.widget.TextView; | |
import android.widget.Toast; | |
import com.vs2.workers.Adapters.WorkerListAdapter; | |
import com.vs2.workers.Databases.DatabaseFunctions; | |
import com.vs2.workers.Objects.Utility; | |
import com.vs2.workers.Objects.Worker; | |
import java.lang.reflect.Field; | |
import java.util.ArrayList; | |
import java.util.List; | |
public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener { | |
private RecyclerView mRecycleViewWorker; | |
private WorkerListAdapter mAdapter; | |
private ArrayList<Worker> mWorkerList; | |
private RelativeLayout mLayoutList; | |
public static boolean isRefresh = false; | |
public static FloatingActionButton fab; | |
private Toolbar mToolbar; | |
private SearchView mSearchView; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
DatabaseFunctions.openDB(MainActivity.this); | |
mToolbar = (Toolbar) findViewById(R.id.toolbar); | |
mToolbar.setTitle(getString(R.string.employees)); | |
setSupportActionBar(mToolbar); | |
initGloble(); | |
} | |
public void initGloble() { | |
mWorkerList = new ArrayList<>(); | |
mAdapter = new WorkerListAdapter(mWorkerList, MainActivity.this); | |
mLayoutList = (RelativeLayout)findViewById(R.id.layout_list); | |
mRecycleViewWorker = (RecyclerView) findViewById(R.id.recyclerview_worker); | |
mRecycleViewWorker.setLayoutManager(new LinearLayoutManager(MainActivity.this)); | |
mCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator_layout); | |
fab = (FloatingActionButton) findViewById(R.id.fab); | |
fab.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
showDialogForAddWorker(); | |
} | |
}); | |
fillListView(); | |
} | |
public void fillListView() { | |
mWorkerList = DatabaseFunctions.getWorkers(); | |
mAdapter = new WorkerListAdapter(mWorkerList, MainActivity.this); | |
// mRecycleViewWorker.addItemDecoration(new SimpleDividerItemDecoration(MainActivity.this)); | |
mRecycleViewWorker.setAdapter(mAdapter); | |
} | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
if (fab != null){ | |
fab.post(new Runnable() | |
{ | |
@Override | |
public void run() | |
{ | |
Utility.InvisibleToVisibleView(fab); | |
} | |
}); | |
} | |
if (mAdapter != null && isRefresh){ | |
isRefresh = false; | |
fillListView(); | |
} | |
} | |
public void showDialogForAddWorker() { | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
//getMenuInflater().inflate(R.menu.menu_main, menu); | |
/*final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); | |
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); | |
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));*/ | |
MenuInflater inflater = getMenuInflater(); | |
inflater.inflate(R.menu.menu_main, menu); | |
MenuItem searchItem = menu.findItem(R.id.action_search); | |
mSearchView = (SearchView) searchItem.getActionView(); | |
setupSearchView(searchItem); | |
return true; | |
} | |
private void setupSearchView(MenuItem searchItem) { | |
if (isAlwaysExpanded()) { | |
mSearchView.setIconifiedByDefault(false); | |
} else { | |
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | |
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); | |
} | |
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); | |
if (searchManager != null) { | |
List<SearchableInfo> searchables =searchManager.getSearchablesInGlobalSearch(); | |
SearchableInfo info =searchManager.getSearchableInfo(getComponentName()); | |
/* for (SearchableInfo inf : searchables) { | |
if (inf.getSuggestAuthority() != null | |
&& inf.getSuggestAuthority().startsWith("applications")){ | |
info = inf; | |
} | |
}*/ | |
mSearchView.setSearchableInfo(info); | |
} | |
mSearchView.setOnQueryTextListener(this); | |
} | |
protected boolean isAlwaysExpanded() { | |
return true; | |
} | |
@Override | |
public boolean onQueryTextSubmit(String query) { | |
Log.e("TAG", "onQueryTextSubmit: " + query); | |
return false; | |
} | |
@Override | |
public boolean onQueryTextChange(String newText) { | |
Log.e("TAG", "onQueryTextChange: " + newText); | |
mAdapter.getFilter().filter(newText); | |
return false; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.vs2.workers.Adapters; | |
import android.annotation.SuppressLint; | |
import android.app.Activity; | |
import android.app.ActivityOptions; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.os.Build; | |
import android.support.v7.widget.RecyclerView; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.view.animation.Animation; | |
import android.view.animation.AnimationUtils; | |
import android.widget.Filter; | |
import android.widget.Filterable; | |
import android.widget.LinearLayout; | |
import android.widget.TextView; | |
import com.vs2.workers.MainActivity; | |
import com.vs2.workers.Objects.Utility; | |
import com.vs2.workers.Objects.Worker; | |
import com.vs2.workers.ProfileActivity; | |
import com.vs2.workers.R; | |
import java.util.ArrayList; | |
public class WorkerListAdapter extends RecyclerView.Adapter<WorkerListAdapter.ViewHolder> implements Filterable | |
{ | |
private ArrayList<Worker> mWorkerList,mWorkerListSearch; | |
private Context mContext; | |
private int lastPosition = -1; | |
public WorkerListAdapter(ArrayList<Worker> workerList, Context context) { | |
super(); | |
this.mWorkerList = workerList; | |
this.mWorkerListSearch = workerList; | |
this.mContext = context; | |
} | |
@Override | |
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { | |
View v = LayoutInflater.from(viewGroup.getContext()) | |
.inflate(R.layout.item_worker_list, viewGroup, false); | |
ViewHolder viewHolder = new ViewHolder(v); | |
return viewHolder; | |
} | |
@Override | |
public void onBindViewHolder(final ViewHolder viewHolder, final int position) { | |
viewHolder.mTextViewName.setText("" + mWorkerList.get(position).getName()); | |
viewHolder.mTextViewSpent.setText("Spent: " + mWorkerList.get(position).getKharchi()); | |
viewHolder.mTextViewSalary.setText("Salary: " + mWorkerList.get(position).getSalary()); | |
int available = mWorkerList.get(position).getSalary() - mWorkerList.get(position).getKharchi(); | |
viewHolder.mTextViewAvailable.setText("Available: " + available); | |
viewHolder.layoutMain.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Utility.VisibleToInvisibleView(MainActivity.fab); | |
Intent intentProfile = new Intent(mContext, ProfileActivity.class); | |
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |
ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation( | |
(Activity)mContext, | |
// android.util.Pair.create((View)viewHolder.mTextViewName, "name"), | |
android.util.Pair.create((View)viewHolder.mTextViewSpent, "spent"), | |
android.util.Pair.create((View)viewHolder.mTextViewSalary, "salary"), | |
android.util.Pair.create((View)viewHolder.mTextViewAvailable, "available")); | |
intentProfile.putExtra("Worker",mWorkerList.get(position)); | |
mContext.startActivity(intentProfile, transitionActivityOptions.toBundle()); | |
}else{ | |
intentProfile.putExtra("Worker",mWorkerList.get(position)); | |
mContext.startActivity(intentProfile); | |
} | |
} | |
}); | |
setAnimation(viewHolder.layoutMain, position); | |
} | |
private void setAnimation(View viewToAnimate, int position) | |
{ | |
// If the bound view wasn't previously displayed on screen, it's animated | |
if (position > lastPosition) | |
{ | |
Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.fade_in); | |
viewToAnimate.startAnimation(animation); | |
lastPosition = position; | |
} | |
} | |
@Override | |
public int getItemCount() { | |
return mWorkerList.size(); | |
} | |
class ViewHolder extends RecyclerView.ViewHolder { | |
public TextView mTextViewName, mTextViewSpent,mTextViewSalary,mTextViewAvailable; | |
public LinearLayout layoutMain; | |
public ViewHolder(View itemView) { | |
super(itemView); | |
mTextViewName = (TextView) itemView.findViewById(R.id.textview_name); | |
mTextViewSpent = (TextView) itemView.findViewById(R.id.textview_kharchi); | |
mTextViewSalary = (TextView) itemView.findViewById(R.id.textview_salary); | |
mTextViewAvailable = (TextView) itemView.findViewById(R.id.textview_available); | |
layoutMain = (LinearLayout) itemView.findViewById(R.id.layout_main); | |
} | |
} | |
@Override | |
public Filter getFilter() { | |
Filter filter = new Filter() { | |
@SuppressWarnings("unchecked") | |
@Override | |
protected void publishResults(CharSequence constraint, | |
FilterResults results) { | |
// TODO Auto-generated method stub | |
try { | |
mWorkerList = (ArrayList<Worker>) results.values; | |
notifyDataSetChanged(); | |
} catch (Exception e) { | |
// TODO: handle exception | |
} | |
} | |
@SuppressLint("DefaultLocale") | |
@SuppressWarnings("unused") | |
@Override | |
protected FilterResults performFiltering(CharSequence constraint) { | |
// TODO Auto-generated method stub | |
FilterResults filterResults = new FilterResults(); | |
ArrayList<Worker> arryList; | |
try { | |
mWorkerList = new ArrayList<Worker>( | |
mWorkerListSearch); | |
if (constraint == null || constraint.length() == 0) { | |
filterResults.count = mWorkerList.size(); | |
filterResults.values = mWorkerList; | |
} else { | |
constraint = constraint.toString().toLowerCase(); | |
ArrayList<Worker> searchStudeList = new ArrayList<Worker>(); | |
for (int i = 0; i < mWorkerList.size(); i++) { | |
if (mWorkerList.get(i).getName() | |
.toString().toLowerCase() | |
.startsWith(constraint.toString())) { | |
searchStudeList.add(mWorkerList.get(i)); | |
} else if (mWorkerList.get(i) | |
.getName().toString().toLowerCase() | |
.contains(constraint.toString())) { | |
searchStudeList.add(mWorkerList.get(i)); | |
} | |
} | |
if (searchStudeList != null | |
&& searchStudeList.size() > 0) { | |
arryList = searchStudeList; | |
} | |
filterResults.count = searchStudeList.size(); | |
filterResults.values = searchStudeList; | |
} | |
} catch (Exception e) { | |
// TODO: handle exception | |
} | |
return filterResults; | |
} | |
}; | |
return filter; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment