Back to project page Grocery-Mate.
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.
/* * 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); } /* ********************************************************************* */ }