1、
获得和展示listview或gridview
package com.anzi.jmsht.ui; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.json.JSONArray; import org.json.JSONObject; import com.anzi.jmsht.AppException; import com.anzi.jmsht.AppManager; import com.anzi.jmsht.Constant; import com.anzi.jmsht.net.xml.api.Net; import com.anzi.jmsht.ui.ImgActivity.ImgGridViewAdapter; import com.anzi.jmsht.util.AsyncLoader; import com.anzi.jmsht.util.Constants; import com.anzi.jmsht.util.PreferencesHelper; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.GridView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; /** * 应用 * * @author tf * */ public class PicListActivity extends Activity { private GridView picgrid; private List<Map<String, Object>> list; SharedPreferences sp; private ExecutorService fixedThreadPool; private PreferencesHelper ph; private HashMap<String, Object> map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_pic_list); // 注册默认的未捕捉异常处理类 Thread.setDefaultUncaughtExceptionHandler(AppException .getAppExceptionHandler()); // 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待: fixedThreadPool = Executors.newFixedThreadPool(3); AppManager.getAppManager().addActivity(this); ph = new PreferencesHelper(getApplicationContext(), Constants.ANZIDate); initView(); getData(); /* VideoListAdapter adapter = new VideoListAdapter(this, list); picgrid.setAdapter(adapter);*/ setListener(); } private void getData() { list = new ArrayList<Map<String, Object>>(); // 获得线程消息 final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { String s = (String) msg.obj; if ("ok".equals(s)) { // 显示余额 /*ImgGridViewAdapter adapter = new ImgGridViewAdapter( PicListActivity.this, list); imgGridView.setAdapter(adapter);*/ VideoListAdapter adapter = new VideoListAdapter(PicListActivity.this, list); picgrid.setAdapter(adapter); } else if ("no".equals(s)) { Toast.makeText(getApplicationContext(), "系统问题", 1) .show(); } } };
//线程池执行线程任务 fixedThreadPool.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { map = new HashMap<String, Object>(); String result = Net.taojin(Constant.taojinUrl + "/querydata.shtml", "type", "images", "userId", ph.getValue("uid"), "currentPageNo", "1", "pageSize", "100"); // 解析json字符串 // result = result.substring(1, result.length()-1); Log.i("图片结果", result); JSONObject jsonObject = new JSONObject(result); map.put("code", jsonObject.getString("code"));// 状态0异常 1正常 JSONArray jsonArray = jsonObject.getJSONArray("data"); JSONObject jsonObject2; for (int i = 0; i < jsonArray.length(); i++) { Map<String, Object> map = new HashMap<String, Object>(); jsonObject2 = (JSONObject) jsonArray.opt(i); map.put("id", jsonObject2.getInt("id"));// 视频id map.put("name", jsonObject2.getString("name"));// 图片名字 map.put("path", jsonObject2.getString("path"));// 图片地址 map.put("integral", jsonObject2.getString("integral"));// 积分 map.put("pic_collect_number", "10人收藏"); map.put("pic_seen_number", "1人观看"); map.put("collect", "0"); map.put("get", "0"); // map.put("bitmap", // Net.getBitmap(jsonObject2.getString("path")));//图片 //map.put("path", jsonObject2.getString("path")); list.add(map); }
//发送消息,通知Handler Message msg = new Message(); msg.obj = "ok"; handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); // 通知UI Message msg = new Message(); msg.obj = "no"; handler.sendMessage(msg); } } }); } private void initView() { picgrid = (GridView) findViewById(R.id.picgrid); } private void setListener() {
//点击详情,进入详情页面 picgrid.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub
//传值id ,img,integral到BigImgActivity
Intent i = new Intent(PicListActivity.this, BigImgActivity.class); i.putExtra("img", (String) list.get(position).get("path")); i.putExtra("integral", (String) list.get(position).get("integral")); i.putExtra("id", (Integer) list.get(position).get("id")); startActivity(i); } }); /* picgrid.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // ByteArrayOutputStream bs = new ByteArrayOutputStream(); // Bitmap bitmap = (Bitmap)list.get(position).get("bitmap"); // bitmap.compress(Bitmap.CompressFormat.JPEG,100,bs); Intent i = new Intent(PicListActivity.this, BigImgActivity.class); i.putExtra("img", (String) list.get(position).get("path")); i.putExtra("integral", (String) list.get(position).get("integral")); i.putExtra("id", (Integer) list.get(position).get("id")); Toast.makeText(PicListActivity.this, "点击了"+position, 0).show(); startActivity(i); } });*/ } class VideoListAdapter extends BaseAdapter { private AsyncLoader loader; private Context context; private List<Map<String, Object>> data; private LayoutInflater inflater; public VideoListAdapter(Context context, List<Map<String, Object>> data) { this.context = context; this.data = data; inflater = LayoutInflater.from(context); loader = new AsyncLoader(context); } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return data.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @SuppressLint("ResourceAsColor") @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (null == convertView) { convertView = inflater.inflate(R.layout.pic_grid_item, null); holder = new ViewHolder(); holder.pic_name = (TextView) convertView .findViewById(R.id.pic_name); holder.pic_collect_number = (TextView) convertView .findViewById(R.id.pic_collect_number); holder.pic_seen_number = (TextView) convertView .findViewById(R.id.pic_seen_number); holder.pic_integral = (TextView) convertView .findViewById(R.id.pic_integral); holder.pic_integral_get = (TextView) convertView .findViewById(R.id.pic_integral_get); holder.pic_btn_collect = (ImageButton) convertView .findViewById(R.id.pic_btn_collect); holder.re_pic_collected = (RelativeLayout) convertView .findViewById(R.id.re_pic_collected); holder.re_pic_collect = (RelativeLayout) convertView .findViewById(R.id.re_pic_collect); holder.pic_iamge_icon = (ImageView) convertView .findViewById(R.id.pic_iamge_icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if ("1".equals(data.get(position).get("collect"))) {// 已收藏 holder.re_pic_collected.setVisibility(View.VISIBLE); holder.re_pic_collect.setVisibility(View.GONE); } else {// 未收藏 holder.re_pic_collected.setVisibility(View.GONE); holder.re_pic_collect.setVisibility(View.VISIBLE); } if ("1".equals(data.get(position).get("get"))) {// 已获得积分 holder.pic_integral.setVisibility(View.GONE); holder.pic_integral_get.setVisibility(View.VISIBLE); } else {// 未获得积分 holder.pic_integral.setVisibility(View.VISIBLE); holder.pic_integral.setText((CharSequence) data.get(position).get("integral")); holder.pic_integral_get.setVisibility(View.GONE); } holder.pic_btn_collect.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub holder.re_pic_collected.setVisibility(View.VISIBLE); holder.re_pic_collect.setVisibility(View.GONE); list.get(position).put("collect", "1"); } }); holder.pic_name.setText((CharSequence) data.get(position).get("name")); holder.pic_collect_number.setText((CharSequence) data.get(position).get( "pic_collect_number")); holder.pic_seen_number.setText((CharSequence) data.get(position).get( "pic_seen_number")); holder.pic_integral.setText("赠送积分:"+(CharSequence) data.get(position).get("integral"));
//异步加载图片
loader.displayImage((String) data.get(position).get("path"), holder.pic_iamge_icon); // holder.ll_bg_video_pic.setBackgroundDrawable(background) return convertView; } // 视图容器类,属性对应布局文件元素 private class ViewHolder { TextView pic_name, pic_collect_number; TextView pic_seen_number, pic_integral, pic_integral_get; RelativeLayout re_pic_collected, re_pic_collect; ImageButton pic_btn_collect; ImageView pic_iamge_icon; } } }
2.BigImgActivity.class
package com.anzi.jmsht.ui; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.anzi.jmsht.AppException; import com.anzi.jmsht.AppManager; import com.anzi.jmsht.Constant; import com.anzi.jmsht.Info; import com.anzi.jmsht.net.xml.api.Net; import com.anzi.jmsht.util.AsyncLoader; import com.anzi.jmsht.util.Constants; import com.anzi.jmsht.util.DESCode; import com.anzi.jmsht.util.Md5Util; import com.anzi.jmsht.util.PreferencesHelper; import com.anzi.jmsht.util.PullHandler; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.content.Intent; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.ImageView; import android.widget.Toast; /** * 大图片预览 * * @author hhh * */ public class BigImgActivity extends Activity implements OnClickListener { private ExecutorService fixedThreadPool; // private Button back; private ImageView bigImg; private String integral; private PreferencesHelper ph; private ArrayList<Info> States; private int id; private String imgpath; private AsyncLoader loader; private Handler handler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 1: addIntengral(); break; default: break; } } }; private Timer timer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_big_img); // 注册默认的未捕捉异常处理类 Thread.setDefaultUncaughtExceptionHandler(AppException .getAppExceptionHandler()); // 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待: fixedThreadPool = Executors.newFixedThreadPool(3); AppManager.getAppManager().addActivity(this); ph = new PreferencesHelper(this, Constants.ANZIDate); loader = new AsyncLoader(this); getImg(); initView(); //10秒后获取积分 timer = new Timer(); timer.schedule(new MyTask(), 10000); } @Override protected void onDestroy() { super.onDestroy(); if (fixedThreadPool != null) { fixedThreadPool.shutdown(); } } /* * 执行延时任务 */ private class MyTask extends TimerTask{ @Override public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } } /* * 获得图片数据 */ private void getImg() { Intent i = getIntent(); imgpath = i.getStringExtra("img"); integral = i.getStringExtra("integral"); id = i.getIntExtra("id", 0); } private void initView() { // back = (Button) findViewById(R.id.back); // back.setOnClickListener(this); bigImg = (ImageView) findViewById(R.id.bigImg); bigImg.setOnClickListener(this); // bigImg.setImageBitmap(bmp); loader.displayImage(imgpath, bigImg); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bigImg: AppManager.getAppManager().finishActivity(); break; default: break; } } /* * 查看图片添加积分 */ private void addIntengral() { // 获得线程消息 final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { String s = (String) msg.obj; if ("ok".equals(s)) { // 显示余额 Toast.makeText(getApplicationContext(), (String) States.get(0).getItem("result"), 1).show(); } else if ("no".equals(s)) { Toast.makeText(getApplicationContext(), "系统问题", 1) .show(); } } }; fixedThreadPool.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { String result = Net.addIntengral( Constant.netcard + "/addintegralyqs.xhtml", "xml", DESCode.requestXml("<?xml version="1.0" encoding="UTF-8"?><root><ReCord><sigen>" + DESCode.responseXml(ph.getValue("sigen")) .split("_")[1] + "</sigen><integral>" + integral + "</integral><id>" + id + "</id><type>image</type></ReCord></root>"), "key", Md5Util.MD5(integral));
// private ArrayList<Info> States; States = PullHandler.URLReadXmlByPull(result, new String[] { "status", "result" }, "ReCord"); // 通知UI Message msg = new Message(); msg.obj = "ok"; handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); // 通知UI Message msg = new Message(); msg.obj = "no"; handler.sendMessage(msg); } } }); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //用户点击返回键时停止观看图片,计时器关闭 timer.cancel(); AppManager.getAppManager().finishActivity(); return true; } return super.onKeyDown(keyCode, event); } }