Skip to main content

SearchView using CursorAdapter


Here MYFRAGMENT is nothing but name of  a Fragment


@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.popup, menu);
    final SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
    final SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
    searchView.setSubmitButtonEnabled(false);
    searchView.setIconifiedByDefault(true);
    //       searchView.setOnCloseListener(this);
    SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            cartAdapter.getFilter().filter(query);
            if (query.length() > 0) {
                SEARCH_QUERY(query);
            }
            System.out.println("on Cart Search submit: " + query);
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            cartAdapter.getFilter().filter(newText);
            if (newText.length() > 0) {
                SEARCH_QUERY(newText);
            }
            System.out.println("on Cart Search Text: " + newText);
            return true;
        }
    };
    searchView.setOnQueryTextListener(textChangeListener);
    super.onCreateOptionsMenu(menu, inflater);
}
private void SEARCH_QUERY(String query) {
    String NEWTEXT = query.trim();
    Cursor cartQuery = dbUtil.getCartQuery(NEWTEXT);
    Log.e("Cart Query", " " + cartQuery.getCount());
    if (cartQuery != null && cartQuery.moveToFirst()) {
        cartQuery.moveToFirst();
        cartAdapter.notifyDataSetChanged();
        cartAdapter = new CartCursorAdapter(context, cartQuery, MYFRAGMENT, true);
        cartList.setAdapter(cartAdapter);
        cartAdapter.notifyDataSetChanged();
    }
}
public static void setListRefresh() {
    cartAdapter = new CartCursorAdapter(context, cartcursor, MYFRAGMENT, true);
    cartList.setAdapter(cartAdapter);
    cartList.setTextFilterEnabled(true);
    cartAdapter.notifyDataSetChanged();
}


Comments

Post a Comment

Popular posts from this blog

Fragment

To enable/disable menu items in Different fragments in same Activity: @Override public void onCreate(@Nullable Bundle savedInstanceState)  {     super.onCreate(savedInstanceState);     setHasOptionsMenu(true);  } @Override public void onPrepareOptionsMenu(Menu menu) {     //Disable the SearchView which is enabled in Product Chart     menu.findItem(R.id.action_search).setVisible(false);   // true to enable } ====================================================

To make a ListView to be scrolled inside of ScrollView

To make a ListView to be scrolled inside of ScrollView: lv . setOnTouchListener ( new ListView . OnTouchListener () { @Override public boolean onTouch ( View v , MotionEvent event ) { int action = event . getAction (); switch ( action ) { case MotionEvent . ACTION_DOWN : // Disallow ScrollView to intercept touch events. v . getParent (). requestDisallowInterceptTouchEvent ( true ); break ; case MotionEvent . ACTION_UP : // Allow ScrollView to intercept touch events. v . getParent (). requestDisallowInterceptTouchEvent ( false ); break ; } // Handle ListView touch events. v . onTouchEvent ( event ); return true ; } }); Refer: http://stackoverflow.com/questions/6210895/listview-inside-scrollview-is-not-scrolling-on-android