package com.hyrt.cei.ui.information;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import com.hyrt.cei.R;
import com.hyrt.cei.adapter.InfAdapter;
import com.hyrt.cei.application.CeiApplication;
import com.hyrt.cei.util.MyTools;
import com.hyrt.cei.util.XmlUtil;
import com.hyrt.cei.vo.ColumnEntry;
import com.hyrt.cei.vo.InfoNew;
import com.hyrt.cei.webservice.service.Service;
public class InfoSearchActivity extends Activity implements OnClickListener {
private ListView list;
private List<InfoNew> infoNews = new ArrayList<InfoNew>();
private EditText searchEdittext;
private String strId;
private Intent intent;
private Boolean canRead;
private List<funId> funIds;
private List<ColumnEntry> columnEntries;
private ColumnEntry columnEntry;
private LinearLayout prolayout;
// 当前页索引
private int index = 0;
// 该搜索下所有的课件列表
private List<InfoNew> allInfoNews = new ArrayList<InfoNew>();
// 上一次的查询内容
private String oldSearchText = "";
// 此次的查询内容
private String currentSearchText;
// 更多按钮
private LinearLayout footer;
// 适配器
private InfAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.information_search);
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
init();
}
public void init() {
prolayout = (LinearLayout) findViewById(R.id.econ_data_pro);
columnEntry = ((CeiApplication) getApplication()).columnEntry;
columnEntries = columnEntry.getEntryChildsForParent(columnEntry
.getColByName(InformationMainActivity.MODEL_NAME).getId());
canRead = false;
findViewById(R.id.info_search_button).setOnClickListener(this);
findViewById(R.id.home).setOnClickListener(this);
findViewById(R.id.zjzx_zixun).setOnClickListener(this);
searchEdittext = (EditText) findViewById(R.id.info_search_edittext);
SharedPreferences settings = getSharedPreferences("search_result",
Activity.MODE_PRIVATE);
String historyStr = settings.getString("history_information", "");
searchEdittext.setText(historyStr);
list = (ListView) findViewById(R.id.info_search_list);
footer = (LinearLayout) LayoutInflater.from(this).inflate(
R.layout.phone_study_listview_bottom, null);
footer.findViewById(R.id.phone_study_morebtn).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
index++;
for (int i = index * 20; i < (index + 1) * 20
&& i < allInfoNews.size(); i++) {
if (i == allInfoNews.size() - 1) {
footer.setVisibility(View.GONE);
} else {
if (footer.getVisibility() == View.GONE)
footer.setVisibility(View.VISIBLE);
}
infoNews.add(allInfoNews.get(i));
}
adapter.notifyDataSetChanged();
}
});
list.addFooterView(footer);
}
public void refreshListData() {
final ColumnEntry columnEntry = ((CeiApplication) getApplication()).columnEntry;
List<ColumnEntry> list = columnEntry
.getEntryChildsForParent(columnEntry.getColByName("政经资讯")
.getId());
strId = "";
for (int i = 0; i < list.size(); i++) {
if (i + 1 == list.size()) {
strId += list.get(i).getId();
} else {
strId += list.get(i).getId() + ",";
}
}
final String srarchStr = searchEdittext.getText().toString();
currentSearchText = srarchStr;
if (currentSearchText.equals(oldSearchText))
return;
oldSearchText = currentSearchText;
this.list.setVisibility(View.GONE);
index = 0;
prolayout.setVisibility(View.VISIBLE);
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stubs
String result = Service.queryBuyNews(columnEntry.getUserId());
SharedPreferences settings = getSharedPreferences(
"search_result", Activity.MODE_PRIVATE);
Editor editor = settings.edit();
editor.putString("history_information", srarchStr);
editor.commit();
String rs = Service.queryNewsByName(strId, srarchStr);
try {
infoNews.clear();
allInfoNews.clear();
XmlUtil.getNewsList(rs, allInfoNews);
funIds = XmlUtil.queryBuyNews(result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Message msg = newsHandler.obtainMessage();
newsHandler.sendMessage(msg);
}
}).start();
}
Handler newsHandler = new Handler() {
public void handleMessage(Message msg) {
list.setVisibility(View.VISIBLE);
prolayout.setVisibility(View.GONE);
if (allInfoNews.size() == 0) {
MyTools.exitShow(InfoSearchActivity.this,
InfoSearchActivity.this.getWindow().getDecorView(),
"没有查到您需要的信息!");
footer.setVisibility(View.GONE);
if (adapter != null)
adapter.notifyDataSetChanged();
} else {
if (adapter == null) {
for (int i = index * 20; i < (index + 1) * 20
&& i < allInfoNews.size(); i++) {
if (i == allInfoNews.size() - 1) {
footer.setVisibility(View.GONE);
} else {
if (footer.getVisibility() == View.GONE)
footer.setVisibility(View.VISIBLE);
}
infoNews.add(allInfoNews.get(i));
}
adapter = new InfAdapter(InfoSearchActivity.this,
R.layout.inf_list_item, infoNews);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
InfoNew new2 = infoNews.get(arg2);
String intentId = new2.getId();
intent = new Intent();
for (int i = 0; i < columnEntries.size(); i++) {
if (columnEntries.get(i).getId()
.equals(new2.getFunctionId())) {
intent.putExtra("topNum", i + "");
}
}
intent.putExtra("extra", intentId);
// intent.putExtra("isMenu", false);
intent.putExtra("functionId", new2.getFunctionId());
intent.setClass(InfoSearchActivity.this,
Information.class);
if (new2.getIsfree().endsWith("1")) {
InfoSearchActivity.this.startActivity(intent);
} else {
for (int i = 0; i < funIds.size(); i++) {
if (funIds.get(i).getFunid()
.endsWith(new2.getFunctionId())) {
canRead = true;
break;
} else {
canRead = false;
}
}
if (canRead) {
InfoSearchActivity.this
.startActivity(intent);
} else {
MyTools.exitShow(InfoSearchActivity.this,
getWindow().getDecorView(),
"未购买该栏目!");
}
}
}
});
} else {
for (int i = index * 20; i < (index + 1) * 20
&& i < allInfoNews.size(); i++) {
if (i == allInfoNews.size() - 1) {
footer.setVisibility(View.GONE);
} else {
if (footer.getVisibility() == View.GONE)
footer.setVisibility(View.VISIBLE);
}
infoNews.add(allInfoNews.get(i));
}
adapter.notifyDataSetChanged();
}
}
}
};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.home:
InfoSearchActivity.this.finish();
break;
case R.id.zjzx_zixun:
intent = new Intent(this, InformationMainActivity.class);
startActivity(intent);
break;
case R.id.info_search_button:
if (searchEdittext.getText().toString().equals("")) {
Toast.makeText(InfoSearchActivity.this, "搜索内容不能为空",
Toast.LENGTH_LONG).show();
} else {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// 得到InputMethodManager的实例
if (imm.isActive()) {
// 如果开启
}
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
InputMethodManager.HIDE_NOT_ALWAYS);
refreshListData();
}
break;
}
}
}