package com.cnblogs.android; import java.util.ArrayList; import java.util.List; import com.cnblogs.android.adapter.UserListAdapter; import com.cnblogs.android.core.UserHelper; import com.cnblogs.android.entity.Users; import com.cnblogs.android.utility.NetHelper; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.os.AsyncTask; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; /** * ���� * @author walkingp * @date:2011-12 * */ public class SearchActivity extends SuperMainView { EditText txtSearch; List<Users> listUser = new ArrayList<Users>(); UserListAdapter adapter; private String q;// ������ ListView listView; ImageButton search_btn;// ������ť ProgressBar progressBar;// ���� Resources res;// ��Դ SharedPreferences sharePreferencesSettings;// ���� ImageButton btnItem;//��ť @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.search_layout); res = this.getResources(); boolean isShowQuitHints=getIntent().getBooleanExtra("isShowQuitHints", true); super.IsShowQuitHints=isShowQuitHints; BindControls(); BindEvent(); } /** * �ҵ��ؼ� */ private void BindControls() { txtSearch = (EditText) findViewById(R.id.txtSearch); txtSearch.clearFocus(); listView = (ListView) findViewById(R.id.search_list); progressBar = (ProgressBar) findViewById(R.id.searchList_progressBar); search_btn = (ImageButton) findViewById(R.id.search_btn); btnItem=(ImageButton)findViewById(R.id.btnItem); // ��һ�β�ѯ sharePreferencesSettings = getSharedPreferences( res.getString(R.string.preferences_key), MODE_PRIVATE); String lastSearch = sharePreferencesSettings.getString( res.getString(R.string.preference_last_search_keyword), ""); txtSearch.setText(lastSearch); // �س����� txtSearch.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (KeyEvent.KEYCODE_ENTER == keyCode) { StartSearch(); return true; } return false; } }); //��ת������ btnItem.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(SearchActivity.this,OrderActivity.class); startActivity(intent); } }); } /** * ���¼� */ private void BindEvent() { // ��ѯ search_btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { StartSearch(); } }); // �����ת listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Intent intent = new Intent(); try { // ���ݲ��� intent.setClass(SearchActivity.this, AuthorBlogActivity.class); Bundle bundle = new Bundle(); TextView tvBlogTitle = (TextView) (v .findViewById(R.id.author_list_title)); TextView tvBlogAuthor = (TextView) (v .findViewById(R.id.author_list_username)); String blogTitle = tvBlogTitle.getText().toString(); String blogAuthor = tvBlogAuthor.getText().toString(); bundle.putString("blogName", blogTitle); bundle.putString("author", blogAuthor); intent.putExtras(bundle); startActivity(intent); } catch (Exception ex) { ex.printStackTrace(); } } }); } /** * ִ������ */ private void StartSearch() { q = txtSearch.getText().toString(); if (q.equals("")) { Toast.makeText(getApplicationContext(), R.string.sys_input_empty, Toast.LENGTH_SHORT); txtSearch.setFocusable(true); return; } // �������� sharePreferencesSettings .edit() .putString( res.getString(R.string.preference_last_search_keyword), q).commit(); new PageTask().execute(); } /** * ���߳������������������ء���ʼ�������ؼ��ء�ˢ�£� * */ public class PageTask extends AsyncTask<String, Integer, List<Users>> { public PageTask() { } protected List<Users> doInBackground(String... params) { try { List<Users> listTmp=new ArrayList<Users>(); List<Users> listUserNew = UserHelper.GetUserList(q); int size = listUserNew.size(); for (int i = 0; i < size; i++) { if (!listUser.contains(listUserNew.get(i))) {// ��������ظ� listTmp.add(listUserNew.get(i)); } } return listTmp; } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onCancelled() { super.onCancelled(); } /** * �������� */ @Override protected void onPostExecute(List<Users> result) { // ���粻���� if (!NetHelper.networkIsAvailable(getApplicationContext())) { Toast.makeText(getApplicationContext(), R.string.sys_network_error, Toast.LENGTH_SHORT).show(); return; } if (result == null || result.size() == 0) {// û�������� return; } listUser = result; progressBar.setVisibility(View.GONE); adapter = new UserListAdapter(getApplicationContext(), listUser, listView); listView.setAdapter(adapter); } @Override protected void onPreExecute() { // ��������� if (listView.getCount() == 0) { progressBar.setVisibility(View.VISIBLE); } } @Override protected void onProgressUpdate(Integer... values) { } } }