Android Open Source - Grocery-Mate Product Search Activity






From Project

Back to project page Grocery-Mate.

License

The source code is released under:

Apache License

If you think the Android project Grocery-Mate 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

/*
* Copyright (C) 2011 iMellon//w w  w .  j av a  2 s .co m
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package com.imellon.android.grocerymate.activity;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import com.imellon.android.grocerymate.R;
import com.imellon.android.grocerymate.io.DownloadAsyncTask;
import com.imellon.android.grocerymate.io.DownloadAsyncTaskIface;
import com.imellon.android.grocerymate.io.JsonProcessorAsyncTask;
import com.imellon.android.grocerymate.io.JsonProcessorAsyncTaskInterface;
import com.imellon.android.grocerymate.io.DownloadAsyncTask.COM_ERROR;
import com.imellon.android.grocerymate.io.JsonProcessorAsyncTask.DATA_HANDLER_ERROR;
import com.imellon.android.grocerymate.model.AbstractObjectType;
import com.imellon.android.grocerymate.model.ProductList;
import com.imellon.android.grocerymate.model.AbstractObjectType.DataType;
import com.imellon.android.grocerymate.util.GorceryMateUriHandler;
import com.imellon.android.grocerymate.util.ResultsAdapter;

/**
* @author Christos Papazafeiropoulos, Dimitris Makris
*/

public class ProductSearchActivity extends Activity {

  private static final String TAG = ProductSearchActivity.class
      .getSimpleName();

  private ListView mList;

  private EditText searchText;

  private ProductList productList;

  private ProgressDialog dialog;

  private enum ViewsEnum {
    ALL, LIST_VIEW
  }

  /* *********************************************************************
   * 
   * Activity cycle functions
   */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "onCreate");

    setupViews();

  }

  @Override
  protected void onResume() {
    super.onResume();
    Log.d(TAG, "onResume");
  }

  @Override
  protected void onPause() {
    super.onPause();
    Log.d(TAG, "onPause");
  }

  @Override
  protected void onStop() {
    super.onStop();
    Log.d(TAG, "onStop");
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "onDestroy");
  }

  /* ********************************************************************* */

  /* *********************************************************************
   * 
   * UI functions
   */
  private void setupViews() {
    setContentView(R.layout.activity_product_search);

    mList = (ListView) findViewById(R.id.list);

    searchText = (EditText) findViewById(R.id.search_text);
  }

  private void updateViews(ViewsEnum v) {
    switch (v) {
    case ALL:
      mList.setAdapter(new ResultsAdapter(this, productList.product_list));
      break;
    case LIST_VIEW:
      mList.setAdapter(new ResultsAdapter(this, productList.product_list));
      break;
    }
  }

  /* ********************************************************************* */

  /* *********************************************************************
   * 
   * UI Interaction functions
   */

  public void onSearchBtnClicked(View v) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(searchText.getWindowToken(), 0);

    String s = searchText.getText().toString();

    if (!TextUtils.isEmpty(s)) {
      searchProduct(s);
    } else {
      searchText.setError(getString(R.string.enter_keyphrase));
    }
  }

  public void onClearBtnClicked(View v) {
    searchText.setText("");
  }

  /* ********************************************************************* */

  /* *********************************************************************
   * 
   * Utility functions
   */

  private void searchProduct(final String s) {

    new DownloadAsyncTask(new DownloadAsyncTaskIface() {

      @Override
      public void onTaskStart() {
        dialog = ProgressDialog.show(ProductSearchActivity.this, "",
            getString(R.string.loading), true);
      }

      @Override
      public void onTaskFinished(String result, String... newParam) {
        new JsonProcessorAsyncTask(
            new JsonProcessorAsyncTaskInterface() {

              @Override
              public void onTaskFinished(AbstractObjectType hamo) {
                dialog.dismiss();
                if (hamo instanceof ProductList) {
                  productList = (ProductList) hamo;
                  Log.d(TAG, "ProductList has: "
                      + productList.product_list.size());

                  updateViews(ViewsEnum.LIST_VIEW);
                }
              }

              @Override
              public void onErrorOccured(DATA_HANDLER_ERROR error) {
                dialog.dismiss();
              }

              @Override
              public void onTaskFinished(AbstractObjectType hamo,
                  TextView t) {
                dialog.dismiss();
              }
            }, null).execute(result,
            DataType.PRODUCT_LIST.toString());
      }

      @Override
      public void onErrorOccured(COM_ERROR error, String reason) {
        dialog.dismiss();
        Log.d(TAG, "Error is: " + error.toString() + " reason: "
            + reason);

      }
    }).execute(GorceryMateUriHandler.getProductByNameFormatedURL(s));
  }

  public static void show(Context c) {
    final Intent intent = new Intent(c, ProductSearchActivity.class);
    c.startActivity(intent);
  }

  /* ********************************************************************* */
}




Java Source Code List

com.imellon.android.grocerymate.GroceryMateApp.java
com.imellon.android.grocerymate.GroceryMatePreferences.java
com.imellon.android.grocerymate.activity.HomeActivity.java
com.imellon.android.grocerymate.activity.ProductSearchActivity.java
com.imellon.android.grocerymate.activity.ShoppingBasketActivity.java
com.imellon.android.grocerymate.cache.MemoryCache.java
com.imellon.android.grocerymate.io.DownloadAsyncTaskIface.java
com.imellon.android.grocerymate.io.DownloadAsyncTask.java
com.imellon.android.grocerymate.io.JsonParser.java
com.imellon.android.grocerymate.io.JsonProcessorAsyncTaskInterface.java
com.imellon.android.grocerymate.io.JsonProcessorAsyncTask.java
com.imellon.android.grocerymate.model.AbstractObjectType.java
com.imellon.android.grocerymate.model.CompanyPoiPriceList.java
com.imellon.android.grocerymate.model.CompanyPoiPrice.java
com.imellon.android.grocerymate.model.PoiList.java
com.imellon.android.grocerymate.model.PoiProductPriceList.java
com.imellon.android.grocerymate.model.PoiProductPrice.java
com.imellon.android.grocerymate.model.Poi.java
com.imellon.android.grocerymate.model.ProductList.java
com.imellon.android.grocerymate.model.Product.java
com.imellon.android.grocerymate.model.TerritoryList.java
com.imellon.android.grocerymate.util.BasketAdapter.java
com.imellon.android.grocerymate.util.GorceryMateUriHandler.java
com.imellon.android.grocerymate.util.HttpManager.java
com.imellon.android.grocerymate.util.ResultsAdapter.java
com.imellon.android.grocerymate.util.UserTask.java