Android Open Source - downtown Subcats And Filters






From Project

Back to project page downtown.

License

The source code is released under:

GNU General Public License

If you think the Android project downtown listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.dklisiaris.downtown;
/* w  w w . ja va  2 s .c  o  m*/

import java.util.ArrayList;
import java.util.List;
import org.dklisiaris.downtown.R;
import org.dklisiaris.downtown.adapters.AddressFilterAdapter;
import org.dklisiaris.downtown.adapters.CustomSuggestionsAdapter;
import org.dklisiaris.downtown.adapters.SubcatsAdapter;
import org.dklisiaris.downtown.db.Category;
import org.dklisiaris.downtown.db.DBHandler;
import org.dklisiaris.downtown.helper.AccessAssets;
import org.dklisiaris.downtown.helper.ImageLoader;
import org.dklisiaris.downtown.helper.Utils;
import org.dklisiaris.downtown.widgets.AspectRatioImageView;

import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelSlideListener;

public class SubcatsAndFilters extends ActionBarActivity implements SearchView.OnQueryTextListener {
    SearchView searchView;
    MenuItem searchMenuItem;

    protected List<Category> menuItems;
    protected List<String> menuAreas;
    protected String targetItem;
    protected String targetID;
    protected Context ct;
    protected AccessAssets ast;
    protected Utils util;
    protected ListView list;
    protected ListView addressList;
    protected DBHandler db;
    protected SubcatsAdapter adapter;
    protected AddressFilterAdapter addressAdapter;
    //private static final String TAG = "SlidePanel";
    private ImageView arrowIcon;
    private boolean withWebsiteOnly = false;

    static final int IMG_CHANGE_DELAY = 2500;
    Handler imgChanger=null;
    ArrayList<String> imgFilenames=null;
    ImageLoader iLoader;
    int imgID=0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        setContentView(R.layout.list_subcategories);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        arrowIcon = (ImageView)findViewById(R.id.collapse_icon);
        arrowIcon.setImageResource(R.drawable.ic_navigation_collapse);
        arrowIcon.setTag("up");

        SlidingUpPanelLayout layout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);
        boolean isSplited = getApplicationContext().getResources().getBoolean(R.bool.split_action_bar);
        if(!isSplited){
            setMargins(layout,0,0,0,0);
        }
        //layout.setShadowDrawable(getResources().getDrawable(R.drawable.above_shadow));
        layout.setAnchorPoint(0.7f);
        layout.setDragView(findViewById(R.id.panel_top));
        layout.setPanelSlideListener(new PanelSlideListener() {
            @Override
            public void onPanelSlide(View panel, float slideOffset) {
                //Log.i(TAG, "onPanelSlide, offset " + slideOffset);                
                if (slideOffset > 0.8) {
                    if (getSupportActionBar().isShowing()) {
                        getSupportActionBar().hide();
                    }
                } else {
                    if (!getSupportActionBar().isShowing()) {
                        getSupportActionBar().show();
                    }

                }
                if(slideOffset >= 0.7){
                    if (arrowIcon.getTag() == "up"){
                        arrowIcon.setImageResource(R.drawable.ic_navigation_expand);
                        arrowIcon.setTag("down");
                    }
                }
                else{
                    if (arrowIcon.getTag() == "down"){
                        arrowIcon.setImageResource(R.drawable.ic_navigation_collapse);
                        arrowIcon.setTag("up");
                    }
                }
                Log.i("Slide offset:", Float.toString(slideOffset));

            }

            @Override
            public void onPanelExpanded(View panel) {
                //Log.i(TAG, "onPanelExpanded");                
            }

            @Override
            public void onPanelCollapsed(View panel) {
                //Log.i(TAG, "onPanelCollapsed");                
            }

            @Override
            public void onPanelAnchored(View panel) {
                //Log.i(TAG, "onPanelAnchored");

            }

            @Override
            public void onPanelHidden(View view) {

            }
        });

        ct = getApplicationContext();
        targetItem = ((GlobalData)ct).getCategory();
        targetID = ((GlobalData)ct).getCatID();

        menuItems = new ArrayList<Category>();
        menuAreas = new ArrayList<String>();

        util = new Utils(ct);
        db = DBHandler.getInstance(ct);
        iLoader = new ImageLoader(this);

        new SubcatsTask().execute();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_general, menu);

        // Get the SearchView and set the searchable configuration
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
        // Assumes current activity is the searchable activity
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
        //Create the search view
        //searchView = new SearchView(getSupportActionBar().getThemedContext());
        searchView.setQueryHint(getString(R.string.query_hint));
        searchView.setOnQueryTextListener(this);
        searchView.setSuggestionsAdapter(new CustomSuggestionsAdapter(this, searchManager.getSearchableInfo(getComponentName()), searchView));
        //searchView.setIconified(true);

        AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
        searchText.setHintTextColor(getResources().getColor(R.color.white));
        searchMenuItem = menu.findItem(R.id.menu_search);
        searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean queryTextFocused) {
                if(!queryTextFocused) {
                    MenuItemCompat.collapseActionView(searchMenuItem);
                    searchView.setQuery("", false);
                }
            }
        });

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            case R.id.toMainHome:
                Intent upIntent = new Intent(this,MainActivity.class);
                upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(upIntent);
                finish();
                return true;
            case R.id.favourites:
                Intent favIntent = new Intent(this,FavsActivity.class);
                favIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(favIntent);
                finish();
                return true;
            case R.id.FreeEntry:
                Intent i = new Intent(this,MoreActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                i.putExtra("title","entry");
                startActivity(i);
                //finish();
                return true;
            case R.id.MoreInfo:
                Intent mi = new Intent(this,MoreActivity.class);
                mi.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                mi.putExtra("title","info");
                startActivity(mi);
                return true;
            case R.id.Contact:
                Intent ci = new Intent(this,MoreActivity.class);
                ci.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                ci.putExtra("title","contact");
                startActivity(ci);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        if (query.length()<3){
            Toast t = Toast.makeText(this, "???????????? ??????????? 3 ????????????", Toast.LENGTH_LONG);
            t.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
            t.show();
        }else{
            Intent sIntent = new Intent(this,SearchActivity.class);
            sIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            sIntent.putExtra("query",query);
            //searchView.setIconified(true);
            MenuItemCompat.collapseActionView(searchMenuItem);
            startActivity(sIntent);
        }
        return true;
    }


    @Override
    public boolean onQueryTextChange(String newText) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override public void onStop(){super.onStop(); if(imgChanger!=null)stopRepeatingTask();}
    @Override public void onResume(){super.onResume(); if(imgChanger!=null)startRepeatingTask();  }

    Runnable m_statusChecker = new Runnable()
    {
        @Override
        public void run() {
            //change the images in a circular array way
            imgID=((imgID+1)%imgFilenames.size());

            AspectRatioImageView imageView = (AspectRatioImageView) findViewById(R.id.banner);

            // load image
            Drawable d = iLoader.loadImage(imgFilenames.get(imgID));
            if(d!=null)imageView.setImageDrawable(d);

            imgChanger.postDelayed(m_statusChecker, IMG_CHANGE_DELAY);
        }
    };

    void startRepeatingTask()
    {
        m_statusChecker.run();
    }

    void stopRepeatingTask()
    {
        imgChanger.removeCallbacks(m_statusChecker);
    }

    public void onRadioButtonClicked(View view) {
        // Is the button now checked?
        boolean checked = ((RadioButton) view).isChecked();

        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.website_only:
                if (checked){
                    withWebsiteOnly = true;
                }
                break;
            case R.id.website_all:
                if (checked){
                    withWebsiteOnly = false;
                }
                break;
        }
    }

    public static void setMargins (View v, int l, int t, int r, int b) {
        if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
            ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
            p.setMargins(l, t, r, b);
            v.requestLayout();
        }
    }

    /**
     * Show a message giving the selected item captions
     */
    @SuppressWarnings("unused")
    private void showSelectedItems() {
        final StringBuffer sb = new StringBuffer("Selection: ");

        // Get an array that tells us for each position whether the item is
        // checked or not
        // --
        final SparseBooleanArray checkedItems = addressList.getCheckedItemPositions();
        if (checkedItems == null) {
            Toast.makeText(this, "No selection info available", Toast.LENGTH_LONG).show();
            return;
        }

        // For each element in the status array
        // --
        boolean isFirstSelected = true;
        final int checkedItemsCount = checkedItems.size();
        for (int i = 0; i < checkedItemsCount; ++i) {
            // This tells us the item position we are looking at
            // --
            final int position = checkedItems.keyAt(i);

            // This tells us the item status at the above position
            // --
            final boolean isChecked = checkedItems.valueAt(i);

            if (isChecked) {
                if (!isFirstSelected) {
                    sb.append(", ");
                }
                sb.append(menuAreas.get(position));
                isFirstSelected = false;
            }
        }

        // Show a message with the countries that are selected
        // --
        Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();
    }

    protected ArrayList<String> getSelectedItems(){
        ArrayList<String> selectedItems = new ArrayList<String>();
        // Get an array that tells us for each position whether the item is
        // checked or not
        // --
        final SparseBooleanArray checkedItems = addressList.getCheckedItemPositions();
        if (checkedItems == null) {
            selectedItems=null;;
            return selectedItems;
        }

        // For each element in the status array
        final int checkedItemsCount = checkedItems.size();
        for (int i = 0; i < checkedItemsCount; ++i) {
            // This tells us the item position we are looking at
            // --
            final int position = checkedItems.keyAt(i);

            // This tells us the item status at the above position
            // --
            final boolean isChecked = checkedItems.valueAt(i);

            if (isChecked && position!=0) {
                String[] splitArea = menuAreas.get(position).split("\\-",-1);
                selectedItems.add(splitArea[0].trim());
            }
            else if(isChecked && position==0){
                selectedItems=null;
                break;
            }
        }

        return selectedItems;
    }

    protected class SubcatsTask extends AsyncTask<String, Integer, List<Category>> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            setSupportProgressBarIndeterminateVisibility(true);
        }

        protected List<Category> doInBackground(String... query) {
            menuItems = db.getCategories("cat_parent_id = '"+targetID+"'");
            menuAreas.add("???? ?? ?????????");
            menuAreas.addAll(db.getAreas("co_category = '"+targetID+"' and co_area != ''"));

            imgFilenames = db.getBanners(Integer.parseInt(targetID));
            imgID = imgFilenames.size()-1;

            db.close();

            return menuItems;
        }


        protected void onPostExecute(List<Category> cats) {

            list=(ListView)findViewById(R.id.list);
            addressList=(ListView)findViewById(R.id.list2);

            View header_view = View.inflate(ct, R.layout.tabs_header, null);
            TextView hv = ((TextView)header_view.findViewById(R.id.ctgr));
            hv.setText(((GlobalData)ct).getCategory());

            list.addHeaderView(header_view);

            if(adapter==null){
                adapter = new SubcatsAdapter(ct);
            }
            if(addressAdapter==null){
                addressAdapter = new AddressFilterAdapter(ct);
            }
            adapter.setData(cats);
            addressAdapter.setData(menuAreas);

            list.setAdapter(adapter);

            addressList.setItemsCanFocus(false);
            addressList.setAdapter(addressAdapter);
            addressList.setItemChecked(0, true);

            setSupportProgressBarIndeterminateVisibility(false);
          
          /* Starting the banner show if there are any banners */
            if(imgFilenames!=null && imgFilenames.size()>0){
                imgChanger = new Handler();
                startRepeatingTask();
            }
            else{
                imgChanger = null;
            }


            addressList.setOnItemClickListener(new OnItemClickListener(){
                public void onItemClick(AdapterView<?> parent, View v, int position, long id){
          /* If click is on address uncheck all addresses */
                    if(position!=0 && addressList.isItemChecked(position) && addressList.isItemChecked(0) ){
                        addressList.setItemChecked(0, false);
                        addressAdapter.notifyDataSetChanged();
                    }
              /* If click is on all address uncheck the clicked addresses */
                    else if(position==0 && addressList.isItemChecked(0)){
                        SparseBooleanArray checkedItems = addressList.getCheckedItemPositions();
                        for(int i = 1; i<checkedItems.size(); i++){
                            if (checkedItems.valueAt(i) && checkedItems.keyAt(i)!=0) {
                                addressList.setItemChecked(checkedItems.keyAt(i), false);
                            }
                        }
                        addressAdapter.notifyDataSetChanged();
                    }
              /* If unclicked all addresses don't let happen. */
                    else if(position==0 && !addressList.isItemChecked(0)){
                        addressList.setItemChecked(0, true);
                        addressAdapter.notifyDataSetChanged();
                    }
              /* Normally click or unclick addresses, except if there is no clicked address in which case we click all addresses */
                    else{
                        boolean othersSelected = false;
                        SparseBooleanArray checkedItems = addressList.getCheckedItemPositions();
                        for(int i = 1; i<checkedItems.size(); i++){
                            if (checkedItems.valueAt(i) && checkedItems.keyAt(i)!=0) {
                                othersSelected = true;
                                break;
                            }
                        }
                        if(!othersSelected){
                            addressList.setItemChecked(0, true);
                        }
                        addressAdapter.notifyDataSetChanged();
                    }
                }
            });

            list.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                    // selected item
                    if((TextView)v.findViewById(R.id.category)!=null){
                        // selected item
                        TextView tv = (TextView)v.findViewById(R.id.category);
                        String product = tv.getText().toString();
                        String category = ((GlobalData)ct.getApplicationContext()).getCategory();
                        String cat_id = ((GlobalData)ct.getApplicationContext()).getCatID();
                        String subcatID = (String)v.getTag();
                        // Launching new Activity on selecting single List Item
                        Intent i = new Intent(ct, Products.class);
                        // sending data to new activity
                        i.putExtra("category", category);
                        i.putExtra("product", product);
                        i.putExtra("key", "subcategory");

                        i.putExtra("company",product);
                        i.putExtra("col", "co_subcategory");
                        i.putExtra("catID",cat_id);
                        i.putExtra("subcatID", subcatID);

                        i.putExtra("withWebsiteOnly", withWebsiteOnly);
                        i.putStringArrayListExtra("areas", getSelectedItems());
                        i.putExtra("source","subcats");
                        startActivity(i);
                    }
                }
            });
        }
    }
}




Java Source Code List

com.google.maps.android.BuildConfig.java
com.google.maps.android.BuildConfig.java
com.google.maps.android.MarkerManager.java
com.google.maps.android.MathUtil.java
com.google.maps.android.PolyUtil.java
com.google.maps.android.SphericalUtil.java
com.google.maps.android.clustering.ClusterItem.java
com.google.maps.android.clustering.ClusterManager.java
com.google.maps.android.clustering.Cluster.java
com.google.maps.android.clustering.algo.Algorithm.java
com.google.maps.android.clustering.algo.GridBasedAlgorithm.java
com.google.maps.android.clustering.algo.NonHierarchicalDistanceBasedAlgorithm.java
com.google.maps.android.clustering.algo.PreCachingAlgorithmDecorator.java
com.google.maps.android.clustering.algo.StaticCluster.java
com.google.maps.android.clustering.view.ClusterRenderer.java
com.google.maps.android.clustering.view.DefaultClusterRenderer.java
com.google.maps.android.geometry.Bounds.java
com.google.maps.android.geometry.Point.java
com.google.maps.android.projection.Point.java
com.google.maps.android.projection.SphericalMercatorProjection.java
com.google.maps.android.quadtree.PointQuadTree.java
com.google.maps.android.ui.BubbleIconFactory.java
com.google.maps.android.ui.IconGenerator.java
com.google.maps.android.ui.RotationLayout.java
com.google.maps.android.ui.SquareTextView.java
com.sothree.slidinguppanel.SlidingUpPanelLayout.java
com.sothree.slidinguppanel.library.BuildConfig.java
com.sothree.slidinguppanel.library.BuildConfig.java
org.dklisiaris.downtown.Addresses.java
org.dklisiaris.downtown.BuildConfig.java
org.dklisiaris.downtown.FavsActivity.java
org.dklisiaris.downtown.GlobalData.java
org.dklisiaris.downtown.Intro.java
org.dklisiaris.downtown.MainActivity.java
org.dklisiaris.downtown.Manifest.java
org.dklisiaris.downtown.MapActivity.java
org.dklisiaris.downtown.MoreActivity.java
org.dklisiaris.downtown.Products.java
org.dklisiaris.downtown.SearchActivity.java
org.dklisiaris.downtown.Search.java
org.dklisiaris.downtown.SingleListItem.java
org.dklisiaris.downtown.Subcategories.java
org.dklisiaris.downtown.SubcatsAndFilters.java
org.dklisiaris.downtown.Tabs.java
org.dklisiaris.downtown.TestActivity.java
org.dklisiaris.downtown.WebViewActivity.java
org.dklisiaris.downtown.Websites.java
org.dklisiaris.downtown.actionbar.ActionBar.java
org.dklisiaris.downtown.actionbar.ScrollingTextView.java
org.dklisiaris.downtown.adapters.AddressFilterAdapter.java
org.dklisiaris.downtown.adapters.CustomAdapter.java
org.dklisiaris.downtown.adapters.CustomStringAdapter.java
org.dklisiaris.downtown.adapters.CustomSuggestionsAdapter.java
org.dklisiaris.downtown.adapters.MultiSelectionAdapter.java
org.dklisiaris.downtown.adapters.SubcatsAdapter.java
org.dklisiaris.downtown.db.Banner.java
org.dklisiaris.downtown.db.Category.java
org.dklisiaris.downtown.db.Company.java
org.dklisiaris.downtown.db.DBHandler.java
org.dklisiaris.downtown.db.DBInterface.java
org.dklisiaris.downtown.db.Image.java
org.dklisiaris.downtown.db.InitData.java
org.dklisiaris.downtown.db.Keyword.java
org.dklisiaris.downtown.db.Mapping.java
org.dklisiaris.downtown.db.Product.java
org.dklisiaris.downtown.db.QueryBuilder.java
org.dklisiaris.downtown.downloader.DownloadTask.java
org.dklisiaris.downtown.downloader.NotificationHelper.java
org.dklisiaris.downtown.helper.AccessAssets.java
org.dklisiaris.downtown.helper.AlertDialogManager.java
org.dklisiaris.downtown.helper.ConnectionDetector.java
org.dklisiaris.downtown.helper.FileCache.java
org.dklisiaris.downtown.helper.ImageLoader.java
org.dklisiaris.downtown.helper.InfoHelper.java
org.dklisiaris.downtown.helper.KeyboardUtil.java
org.dklisiaris.downtown.helper.MemoryCache.java
org.dklisiaris.downtown.helper.ShareHelper.java
org.dklisiaris.downtown.helper.UpdateConfirmDialog.java
org.dklisiaris.downtown.helper.UpdateHelper.java
org.dklisiaris.downtown.helper.Utils.java
org.dklisiaris.downtown.helper.XMLParser.java
org.dklisiaris.downtown.maps.AbstractMapActivity.java
org.dklisiaris.downtown.maps.CompanyMarker.java
org.dklisiaris.downtown.maps.DirectionsInfo.java
org.dklisiaris.downtown.maps.GMapV2Direction.java
org.dklisiaris.downtown.maps.Nearby.java
org.dklisiaris.downtown.maps.PopupAdapter.java
org.dklisiaris.downtown.providers.KeywordContract.java
org.dklisiaris.downtown.providers.KeywordProvider.java
org.dklisiaris.downtown.widgets.AspectRatioImageView.java
org.dklisiaris.downtown.widgets.CheckableRelativeLayout.java
org.dklisiaris.downtown.widgets.CustomScrollView.java
org.dklisiaris.downtown.widgets.FlipAnimator.java
org.dklisiaris.downtown.widgets.InertCheckBox.java
org.dklisiaris.downtown.widgets.MultiSpinner.java