package edu.hebtu.movingcampus.activity;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import edu.hebtu.movingcampus.R;
import edu.hebtu.movingcampus.activity.base.BaseFragmentActivity;
import edu.hebtu.movingcampus.adapter.NewsListAdapter;
import edu.hebtu.movingcampus.biz.NewsDao;
import edu.hebtu.movingcampus.biz.base.BaseDao;
import edu.hebtu.movingcampus.entity.NewsShort;
import edu.hebtu.movingcampus.subjects.NetworkChangeReceiver;
import edu.hebtu.movingcampus.subjects.NetworkChangeReceiver.NetworkchangeListener;
import edu.hebtu.movingcampus.view.NewsFragment;
import edu.hebtu.movingcampus.widget.XListView;
public class SearchActivity extends BaseFragmentActivity implements
OnClickListener, XListView.IXListViewListener,NetworkchangeListener{
private ImageView btnGohome;
private String searchContent;
private EditText edtSearch;
private XListView listview;
private LinearLayout loadLayout;
private NewsListAdapter adapter;
private String mTag;
private InputMethodManager imm;
private List<NewsShort> newsResponse;
private NewsDao newsDao;
private ImageView mWait;
private boolean loaded;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.filter_news_layout);
Intent i = getIntent();
mTag = i.getStringExtra("tag");
loaded=false;
initData();
initView();
bindButton();
}
private void bindButton() {
findViewById(R.id.btn_gohome).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
SearchActivity.this.finish();
}
});
findViewById(R.id.img_search).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
edtSearch.clearFocus();
searchContent = edtSearch.getText().toString();
new MyTask(searchContent, true, true).execute(newsDao);
}
});
}
public void initData() {
listview = (XListView) findViewById(R.id.list_view);
newsDao = new NewsDao(this);
listview.setXListViewListener(this);
adapter = new NewsListAdapter(this, R.layout.news_item,listview, null);
listview.setAdapter(adapter);
imm = (InputMethodManager) getApplicationContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
}
public void initView() {
// txtEmpty = (TextView) findViewById(R.id.txt_empty);
btnGohome = (ImageView) findViewById(R.id.btn_gohome);
btnGohome.setOnClickListener(this);
edtSearch = (EditText) findViewById(R.id.edt_search);
loadLayout = (LinearLayout) findViewById(R.id.view_loading);
loadLayout.setVisibility(View.GONE);
edtSearch.setHint("即将为您搜索 " + mTag);
edtSearch.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
imm.showSoftInput(v, 0);
} else {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
});
edtSearch.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
if (v.getTag() == null) {
v.setTag(1);
edtSearch.clearFocus();
searchContent = edtSearch.getText().toString();
new MyTask(searchContent, true, true).execute(newsDao);
} else {
v.setTag(null);
}
return true;
}
return false;
}
});
mWait = (ImageView) findViewById(R.id.search_imageview_wait);
}
public class MyTask extends
AsyncTask<BaseDao, String, ArrayList<NewsShort>> {
private String content;
private boolean useCache;
private boolean clear;
public MyTask(String content) {
this.content = content;
this.clear = false;
this.useCache = true;
}
public MyTask(String content, boolean usecache) {
this.content = content;
this.useCache = usecache;
this.clear = false;
}
public MyTask(String content, boolean usecache, boolean clear) {
this.content = content;
this.useCache = usecache;
this.clear = clear;
}
@Override
protected void onPreExecute() {
if (clear)
adapter.clear();
loaded=false;
mWait.setVisibility(View.GONE);
loadLayout.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected ArrayList<NewsShort> doInBackground(BaseDao... params) {
BaseDao dao = params[0];
if ((newsResponse = ((NewsDao) dao).mapperJson(useCache,
MyTask.this.content)) != null) {
return (ArrayList<NewsShort>) newsResponse;
} else {
return null;
}
}
@Override
protected void onPostExecute(ArrayList<NewsShort> result) {
super.onPostExecute(result);
listview.setRefreshTime(new SimpleDateFormat("MM/dd HH:mm:ss")
.format(new Date()));
if (result != null)
adapter.appendToList(result);
loadLayout.setVisibility(View.GONE);
mWait.setVisibility(View.GONE);
loaded=true;
}
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btn_gohome:
SearchActivity.this.finish();
break;
}
}
@Override
public void onRefresh() {
new MyTask(searchContent, true, true).execute(newsDao);
}
@Override
public void onLoadMore() {
if (newsResponse != null && newsResponse.size() > 0)
new MyTask(searchContent, true).execute(newsDao);
else
listview.stopLoadMore();
}
@Override
public void onResume(){
super.onResume();
NetworkChangeReceiver.unRegistNetworkListener(this);
}
@Override
public void onPause() {
super.onPause();
listview.stopRefresh();
listview.stopLoadMore();
NetworkChangeReceiver.registNetWorkListener(this);
}
@Override
public void onDataEnabled() {
if(!loaded)
new MyTask(searchContent, true).execute(newsDao);
}
@Override
public void onDataDisabled() {
// TODO Auto-generated method stub
}
}