package com.emop.client;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.SimpleAdapter.ViewBinder;
import android.widget.TextView;
import com.baidu.mobstat.StatService;
import com.emop.client.io.FmeiClient;
import com.emop.client.provider.Schema;
import com.emop.client.provider.model.Topic;
import com.emop.client.widget.CateImageView;
import com.emop.client.wxapi.DensityUtil;
public class CateListActivity extends BaseActivity {
private ArrayList<HashMap<String, Object>> cateList;
//private FmeiClient client = null;
private SimpleAdapter adapter = null;
private GridView gridview = null;
//private float scaleRate = 0;
private int cateFontSize = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cate_view);
client = FmeiClient.getInstance(this.getApplicationContext(), false);
cateList = new ArrayList<HashMap<String, Object>>();
loadCateList(cateList);
Display display = getWindowManager().getDefaultDisplay();
final int screenWidth = display.getWidth();
cateFontSize = DensityUtil.dip2px(this, 14);
adapter = new SimpleAdapter(this, //没什么解释
cateList, //数据来源
R.layout.cate_item,//night_item的XML实现
new String[] {"ItemImage", },
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.item_pic, }){
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
v.getLayoutParams().height = screenWidth / 3;
View v2 = v.findViewById(R.id.item_pic);
if(v2 instanceof CateImageView){
CateImageView cv = (CateImageView)v2;
HashMap<String, Object> item = (HashMap<String, Object>)adapter.getItem(position);
cv.name = item.get("ItemText") + "";
}
return v;
}
};
//adapter.
adapter.setViewBinder(new ViewBinder(){
@Override
public boolean setViewValue(View v, Object data, final String picUrl) {
//Log.d(Constants.TAG_EMOP, "picUrl:" + picUrl + ", data:" + data);
//HashMap<String, Object> item = (HashMap<String, Object>)data;
if(v instanceof CateImageView){
final CateImageView iv = (CateImageView)v;
v.setTag(picUrl);
//iv.setImageResource(R.drawable.chi);
//iv.setImageResource(R.drawable.cate_img_bg);
Bitmap bitmap = client.appImgLoader.cache.get(picUrl, 300, false, false);
if(bitmap != null){
iv.setImageBitmap(bitmap);
}else {
iv.setImageResource(R.drawable.cate_img_bg);
client.appImgLoader.runTask(new Runnable(){
public void run(){
final Bitmap bitmap2 = client.appImgLoader.cache.get(picUrl, 300, false, true);
if(bitmap2 != null){
handler.post(new Runnable(){
public void run(){
ImageView vv = (ImageView)gridview.findViewWithTag(picUrl);
if(vv != null){
vv.setImageBitmap(bitmap2);
}
}
});
}
}
});
}
iv.fontSize = cateFontSize;
return true;
}
return false;
}});
gridview = (GridView)findViewById(R.id.gridView1);
gridview.setAdapter(adapter);
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, Object> item = (HashMap<String, Object>)adapter.getItem(position);
long itemId = (Integer)item.get(BaseColumns._ID);
String title = item.get("ItemText") + "";
StatService.onEvent(CateListActivity.this, "click_cate", itemId + "_" + title, 1);
Log.d(Constants.TAG_EMOP, "click activity item:" + itemId);
Uri dataUri = Uri.parse("content://" + Schema.AUTHORITY + "/cate/" + itemId + "/list");
Intent intent = new Intent().setClass(CateListActivity.this,
GuangItemListActivity.class);
intent.setData(dataUri);
intent.putExtra("title", title);
startActivity(intent);
}
});
getContentResolver().registerContentObserver(Schema.TOPIC_LIST, false, new ContentObserver(handler){
public void onChange(boolean selfChange) {
Log.d(Constants.TAG_EMOP, "cate list is changed...");
loadCateList(cateList);
adapter.notifyDataSetChanged();
}
});
}
private void loadCateList(ArrayList<HashMap<String, Object>> lstImageItem){
lstImageItem.clear();
Cursor c = client.getCateList(getContentResolver());
boolean hasMore = c.moveToFirst();
int picIndex = -1;
int id = -1;
int nameIndex = -1;
if(hasMore){
picIndex = c.getColumnIndex(Topic.FRONT_PIC);
id = c.getColumnIndex(BaseColumns._ID);
nameIndex = c.getColumnIndex(Topic.TITLE);
}else {
Log.d(Constants.TAG_EMOP, "Not found data by uri:");
}
for(;hasMore; hasMore = c.moveToNext()){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", c.getString(picIndex));
map.put("ItemText", c.getString(nameIndex));
map.put("id", c.getInt(id));
map.put(BaseColumns._ID, c.getInt(id));
lstImageItem.add(map);
}
if(c != null){
c.close();
}
}
public void doKeywordSearch(View v){
TextView text = (TextView)this.findViewById(R.id.search_keyword);
String keyword = text.getText().toString();
if(keyword.trim().length() > 0){
String searchUrl = String.format("http://s.m.taobao.com/search.htm?q=%s&pid=mm_%s_0_0",
Uri.encode(keyword), client.trackPID);
StatService.onEvent(this, "search", keyword + "_" + client.trackPID + "_" + client.userId, 1);
Intent intent = new Intent().setClass(this, WebViewActivity.class);
intent.putExtra("http_url", searchUrl);
intent.putExtra("title", keyword);
this.startActivity(intent);
}else {
showToast("请输入需要搜索的关键词。");
}
}
}