package coolbuy360.searchhealth; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView.OnItemClickListener; import android.widget.AbsListView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import coolbuy360.adapter.DiseaseSearchListViewAdater; import coolbuy360.logic.ConstantsSetting; import coolbuy360.logic.Disease; import coolbuy360.service.TimestampException; import coolbuy360.service.searchApp; public class DiseaseSearch extends Activity { private String keywordString; private ListView searchListView; private Button loadMoreButton; private View loadMoreView; private ProgressBar proBar; private TextView protxt; EditText searchbar_inputtext; private DiseaseSearchListViewAdater adapter; private int pageIndex = 1; private int pagesize = ConstantsSetting.QLDefaultPageSize; private boolean isloading; LinearLayout async_begin; LinearLayout async_error; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.d_disease_search_result); // Ϊ�˳���׼�� searchApp.getInstance().addActivity(this); Bundle bundle = getIntent().getExtras(); keywordString = bundle.get("disekeyword").toString(); loadMoreView = getLayoutInflater().inflate(R.layout.p_druglist_foot, null); loadMoreButton = (Button) loadMoreView .findViewById(R.id.p_listview_footbtn); proBar = (ProgressBar) loadMoreView.findViewById(R.id.p_probar); protxt = (TextView) loadMoreView.findViewById(R.id.p_protxt); searchListView = (ListView) this .findViewById(R.id.dis_search_result_list); searchListView.addFooterView(loadMoreView);// searchbar_inputtext = (EditText) this.findViewById(R.id.searchbar_inputtext); ImageButton searchbar_searchbtn = (ImageButton) this .findViewById(R.id.searchbar_searchbtn); ImageButton actionbar_pre_btn = (ImageButton) this .findViewById(R.id.actionbar_pre_btn); searchbar_searchbtn.setOnClickListener(new searchOnclick()); actionbar_pre_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub DiseaseSearch.this.finish(); } }); searchbar_inputtext.setText(keywordString); searchbar_inputtext.setSelection(keywordString.length()); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // ��������� imm.hideSoftInputFromWindow(searchbar_inputtext.getWindowToken(), 0); async_begin = (LinearLayout) findViewById(R.id.async_begin); async_begin.setVisibility(View.VISIBLE); async_error = (LinearLayout) findViewById(R.id.async_error); searchListView.setVisibility(View.GONE); new AsyncLoader().execute(); } /** * ���ݽ���������󶨼����� * * @param diseaselist */ private void initAdapter(List<Map<String, String>> diseaselist) { // TODO Auto-generated method stub adapter = new DiseaseSearchListViewAdater(this, diseaselist); adapter.count = diseaselist.size();// �����һҳû��4���Ļ���ô�죿 if (diseaselist.size() < pagesize) { loadMoreView.setVisibility(View.GONE); } searchListView.setVisibility(View.VISIBLE); searchListView.setAdapter(adapter);// �Զ�ΪidΪ��list��listview���������� searchListView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub if (firstVisibleItem + visibleItemCount == totalItemCount) { if (!isloading)// ���û�м����� { loadMoreButton.setVisibility(View.GONE); proBar.setVisibility(View.VISIBLE); protxt.setVisibility(View.VISIBLE); // Toast.makeText(DrugStore.this, pageIndex, 1) // .show(); // Log.i("pageindex", pageIndex + "," + pageSize); new AsynLoader_more().execute(); } else { // storeListView.removeFooterView(loadMoreView);// } } } }); searchListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long arg3) { //FootView Item ��� if (arg3 == -1) return; // ExpandableListView ev = (ExpandableListView) parent; Map<String, String> maplist = (Map<String, String>) parent .getItemAtPosition(position); String diseaseid = maplist.get("diseaseid"); String diseasename = maplist.get("diseasename"); Intent decriptionIntent = new Intent().setClass( DiseaseSearch.this, DiseaseDecription.class); Bundle bundle = new Bundle(); bundle.putString("diseaseid", diseaseid); bundle.putString("diseasesname", diseasename); decriptionIntent.putExtras(bundle); startActivity(decriptionIntent); } }); //loadMoreButton.setOnClickListener(new moreOnClick()); } /** * ��һ�μ���ҳ���첽��ȡ����ҩƷ�б� */ private class AsyncLoader extends AsyncTask<String, Void, Integer> { List<Map<String, String>> innerdruglist; @Override protected Integer doInBackground(String... params) { try { // �������� if (keywordString.length() > 0) { innerdruglist = Disease.getListByKeyWord(keywordString, pagesize, 1); } if (innerdruglist != null) { return (innerdruglist.size() > 0) ? 0 : 1; } else { return 2;// �������Ӵ��� } } catch (TimestampException ex) { return -2; } catch (Exception e) { // TODO Auto-generated catch block return 2; } } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); loadMoreButton.setText("����"); loadMoreView.setVisibility(View.VISIBLE); } @Override // ������� protected void onPostExecute(Integer result) { if (result == 0) { initAdapter(innerdruglist); async_begin.setVisibility(View.GONE); async_error.setVisibility(View.GONE); isloading = false; pageIndex = 1; } else if (result == 1) { async_begin.setVisibility(View.GONE); TextView async_error_txt = (TextView) async_error .findViewById(R.id.async_error_txt); async_error_txt.setText("û���ҵ�����ѯ�ļ�����Ϣ��"); Button async_error_reflesh = (Button) async_error .findViewById(R.id.async_error_reflesh); async_error_reflesh.setVisibility(View.GONE); async_error.setVisibility(View.VISIBLE); } else { // Toast.makeText(DrugStore.this, "-1", 1).show(); async_begin.setVisibility(View.GONE); async_error.setVisibility(View.VISIBLE); TextView async_error_txt = (TextView) async_error .findViewById(R.id.async_error_txt); if (result == -2) { async_error_txt.setText(R.string.error_timestamp); } else { async_error_txt.setText(R.string.error_nonetwork); } Button async_error_reflesh = (Button) async_error .findViewById(R.id.async_error_reflesh); async_error_reflesh.setVisibility(View.VISIBLE); async_error_reflesh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub async_error.setVisibility(View.GONE); async_begin.setVisibility(View.VISIBLE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // ��������� imm.hideSoftInputFromWindow( searchbar_inputtext.getWindowToken(), 0); new AsyncLoader().execute(); } }); } } } /** * ������ť��� */ private final class searchOnclick implements android.view.View.OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub keywordString = searchbar_inputtext.getText().toString().trim(); if (!keywordString.equals("")) { async_begin.setVisibility(View.VISIBLE); searchListView.setVisibility(View.GONE); new AsyncLoader().execute(); } else { Toast.makeText(DiseaseSearch.this, "�������ѯ�ؼ��֣�", Toast.LENGTH_SHORT).show(); } InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // ��������� imm.hideSoftInputFromWindow(searchbar_inputtext.getWindowToken(), 0); } } private final class moreOnClick implements android.view.View.OnClickListener { public void onClick(View v) { // TODO Auto-generated method stub loadMoreButton.setVisibility(View.GONE); proBar.setVisibility(View.VISIBLE); protxt.setVisibility(View.VISIBLE); new AsynLoader_more().execute(); } } /** * �첽���ظ������� */ private class AsynLoader_more extends AsyncTask<String, Void, Integer> { List<Map<String, String>> innerdruglist; @Override protected Integer doInBackground(String... params) { // TODO Auto-generated method stub try { innerdruglist = Disease.getListByKeyWord(keywordString, pagesize, pageIndex + 1); // ȡ�õ�ǰҳ���ݺ���Ӵ�druglist�� if (innerdruglist != null) { return (innerdruglist.size() > 0) ? 0 : 1; } else { return 2;// �������Ӵ��� } } catch (Exception e) { // TODO Auto-generated catch block return 2; } } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); isloading = true; } @Override protected void onPostExecute(Integer result) { // TODO Auto-generated method stub // StrictModeWrapper.init(getApplicationContext()); if (result == 0) { for (Map<String, String> item : innerdruglist) { adapter.addItem(item); } if (innerdruglist.size() < pagesize) { loadMoreView.setVisibility(View.GONE); } else { loadMoreButton.setText("����"); loadMoreButton.setVisibility(View.VISIBLE); } proBar.setVisibility(View.GONE); protxt.setVisibility(View.GONE);// ����progressbar isloading = false; adapter.count += innerdruglist.size(); ; adapter.notifyDataSetChanged(); pageIndex++; } else if (result == 1) { if (innerdruglist.size() < pagesize) { loadMoreView.setVisibility(View.GONE); } else { loadMoreButton.setVisibility(View.VISIBLE); } loadMoreButton.setBackgroundColor(getResources().getColor( R.color.transparent)); loadMoreButton.setClickable(false); loadMoreButton.setText("û�и������ݣ�"); proBar.setVisibility(View.GONE); // ����progressbar protxt.setVisibility(View.GONE); } else if (result == 2)// ������ݼ������ { loadMoreButton.setVisibility(View.VISIBLE); loadMoreButton.setBackgroundColor(getResources().getColor( R.color.transparent)); loadMoreButton.setText("�������Ӵ���"); proBar.setVisibility(View.GONE); protxt.setVisibility(View.GONE);// ����progressbar isloading = false; } } } }