大佬教程收集整理的这篇文章主要介绍了searchview如何在android中为listView工作?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
------------------------------------------------------ TextView TextView -------------------------------------------------- TextView TextView ---------------------------------------------------- TextView TextView ------------------------------------------------------- TextView TextView ----------------------------------------------------
因此可以使用android中的searchview在listview的每个组件上搜索我的搜索内容.
例如,如果我输入searchview“bob”.然后它将检查所有4 textview中的bob并给你更新的结果….
我在ActionBar中使用SearchView来显示此功能.
我的活动 –
public class MyActivity extends SherlockListActivity implements OnQueryTextListener { private Mymessage mymessage; // list item,which is a model class in my case private ListView mListView; private messageAdapter mAdapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.layout_containing_listView); } @Override public @R_772_8487@an onCreateOptionsMenu(Menu menu) { //Create the search view SearchView searchView = new SearchView(getSupportActionBar().getThemedContext()); mListView = getListView(); mListView.setTextFilterEnabled(true); setupSearchView(searchView); menu.add(0,1,null) .setIcon(R.drawable.ic_search) .setActionView(searchView) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); return super.onCreateOptionsMenu(menu); } private void setupSearchView(SearchView mSearchView) { mSearchView.setIconifiedByDefault(false); mSearchView.setSubmitButtonEnabled(false); mSearchView.setOnQueryTextListener(this); mSearchView.setQueryHint("Search Sender"); } @Override public @R_772_8487@an onQueryTextChange(String newText) { if (TextUtils.isEmpty(newText)) { mListView.clearTextFilter(); } else { mListView.setFilterText(newText); } return true; } @Override public @R_772_8487@an onQueryTextSubmit(String query) { return false; } }
我的适配器 –
public class messageAdapter extends BaseAdapter implements Filterable { List<Mymessage> msgsList; List<Mymessage> mOriginalValues; List<String> mListItem; // any key of Mymessage Model Class Mymessage message; public messageAdapter(List<Mymessage> msgList) { super(); this.msgsList = msgList; } …. …. … @Override public Filter getFilter() { /** * A filter object which will * filter message key * */ Filter filter = new Filter() { @SuppressWarnings("unchecked") @Override protected void publishResults(CharSequence consTraint,FilterResults results) { msgsList = (List<Mymessage>) results.values; // has the filtered values notifyDataSetChanged(); // notifies the data with new filtered values. Only filtered values will be shown on the list } @Override protected FilterResults performFiltering(CharSequence consTraint) { FilterResults results = new FilterResults(); // Holds the results of a filtering operation for publishing List<Mymessage> FilteredArrList = new ArrayList<Mymessage>(); if (mOriginalValues == null) { mOriginalValues = new ArrayList<Mymessage>(msgsList); // saves the original data in mOriginalValues } if(mListItem == null){ mListItem = new ArrayList<String>(); for(Mymessage message : mOriginalValues){ mListItem.add(message.getmessage()); } } /** * * If consTraint(CharSequence that is received) is null returns the mOriginalValues(Original) values * else does the Filtering and returns FilteredArrList(Filtered) * **/ if (consTraint == null || consTraint.length() == 0) { /* CONTRACT FOR IMPLEMENTinG FILTER : set the Original values to result which will be returned for publishing */ results.count = mOriginalValues.size(); results.values = mOriginalValues; } else { /* Do the filtering */ consTraint = consTraint.toString().toLowerCase(); for (int i = 0; i < mListItem.size(); i++) { String data = mListItem.get(i); if (data.toLowerCase().startsWith(consTraint.toString())) { FilteredArrList.add(mOriginalValues.get(i)); } } // set the Filtered result to return results.count = FilteredArrList.size(); results.values = FilteredArrList; } return results; } }; return filter; } }
public class Mymessage implements Parcelable{ private String messageKey = ""; private String key = ""; private String key2 = ""; //getters and setters }
以上是大佬教程为你收集整理的searchview如何在android中为listView工作?全部内容,希望文章能够帮你解决searchview如何在android中为listView工作?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。