项目结构
分析
adapter相关:
以活动模块的listview当参考
import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.os.Handler; import android.text.style.ClickableSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.stgl.R; import com.example.stgl.bean.HuoDong; import com.example.stgl.bean.PlunInfo; public class HdAdapter extends BaseAdapter { private List<HuoDong> list; private LayoutInflater inflater; //private static LayoutInflater inflater = null; public HdAdapter(Context context,List<HuoDong> duanZiInfos) { inflater = LayoutInflater.from(context); this.list = duanZiInfos; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.item_hd, null); holder = new ViewHolder(); holder.text_title = (TextView) convertView.findViewById(R.id.txt_htitle); holder.text_huodong = (TextView) convertView.findViewById(R.id.txt_hword); holder.text_clue = (TextView) convertView.findViewById(R.id.hd_clue); holder.text_time = (TextView) convertView.findViewById(R.id.hd_time); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.text_title.setText(list.get(position).getHtitle().toString()); holder.text_huodong.setText(list.get(position).getHword().toString()); holder.text_clue.setText(list.get(position).getOfclue().toString()); holder.text_time.setText(list.get(position).getHtime().toString()); return convertView; } class ViewHolder { private TextView text_title; private TextView text_huodong; private TextView text_clue; private TextView text_time; } } bean省略,json解析省略
网络数据请求和接收返回数据方式
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.Map; public class HttpUtils { //public static String URL = "http://192.168.1.102:8080/STGLserver/login"; /* * Function : 发送Post请求到服务器 * Param : 请求体内容,encode编码格式 */ public static String submitPostData(Map<String, String> params, String encode,String ul) { byte[] data = getRequestData(params, encode).toString().getBytes();//获得请求体 try { URL url = new URL(ul); HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); httpURLConnection.setConnectTimeout(3000); //设置连接超时时间 httpURLConnection.setDoInput(true); //打开输入流,以便从服务器获取数据 httpURLConnection.setDoOutput(true); //打开输出流,以便向服务器提交数据 httpURLConnection.setRequestMethod("POST"); //设置以Post方式提交数据 httpURLConnection.setUseCaches(false); //使用Post方式不能使用缓存 //设置请求体的类型是文本类型 httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //设置请求体的长度 httpURLConnection.setRequestProperty("Content-Length", String.valueOf(data.length)); //获得输出流,向服务器写入数据 OutputStream outputStream = httpURLConnection.getOutputStream(); outputStream.write(data); int response = httpURLConnection.getResponseCode(); //获得服务器的响应码 if(response == HttpURLConnection.HTTP_OK) { InputStream inptStream = httpURLConnection.getInputStream(); return dealResponseResult(inptStream); //处理服务器的响应结果 } } catch (IOException e) { e.printStackTrace(); } return ""; } /* * Function : 封装请求体信息 * Param : 请求体内容,encode编码格式 */ public static StringBuffer getRequestData(Map<String, String> params, String encode) { StringBuffer stringBuffer = new StringBuffer(); //存储封装好的请求体信息 try { for(Map.Entry<String, String> entry : params.entrySet()) { stringBuffer.append(entry.getKey()) .append("=") .append(URLEncoder.encode(entry.getValue(), encode)) .append("&"); } stringBuffer.deleteCharAt(stringBuffer.length() - 1); //删除最后的一个"&" } catch (Exception e) { e.printStackTrace(); } return stringBuffer; } /* * Function : 处理服务器的响应结果(将输入流转化成字符串) * Param : 服务器的响应输入流 */ public static String dealResponseResult(InputStream inputStream) { String resultData = null; //存储处理结果 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; try { while((len = inputStream.read(data)) != -1) { byteArrayOutputStream.write(data, 0, len); } } catch (IOException e) { e.printStackTrace(); } resultData = new String(byteArrayOutputStream.toByteArray()); return resultData; } }
SharedPreferences 的使用
SharedPreferences sp = getSharedPreferences("usertext",Activity.MODE_PRIVATE); Editor ed = sp.edit(); ed.putString("hid",Integer.toString(hid)); //ed.putString("rid", Integer.toString(rid)); ed.putString("hname", hname); ed.commit();
activity处理数据之类相关的东西
// Runnable实现 Runnable mRunnable = new Runnable() { @Override public void run() { try { Thread.sleep(1000);// 暂停2秒再发送消息 getData(); } catch (InterruptedException e) { e.printStackTrace(); } // } } }; public void getData() { Map<String,String> map = new HashMap<String,String>(); map.put("school", school); String aa = HttpUtils.submitPostData(map, "utf-8",UrlUtil.url_hdong); Log.e(TAG, "-------------------------"+aa); List<HuoDong> hdong = HdongUtil .huodong(aa); // android多线程规定:子线程中不可以更改UI // 从系统的消息池中拿消息,节省资源 Message msg = Message.obtain(); msg.obj = hdong; msg.what = 2; handler_hd.sendMessage(msg); } Handler handler_hd = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case 2: @SuppressWarnings("unchecked") List<HuoDong> hdong = (List<HuoDong>) msg.obj; contentListView.setAdapter(new HdAdapter(HDongActivity.this, hdong)); break; } }; }; class HdAsyncTask extends AsyncTask<String, Void, List<HuoDong>> { @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); progressbar.setVisibility(View.VISIBLE); } @Override protected List<HuoDong> doInBackground(String... arg) { // TODO Auto-generated method stub String url = arg[0]; Map<String,String> map = new HashMap<String,String>(); map.put("school", school); String aa = HttpUtils.submitPostData(map, "utf-8",url); List<HuoDong> hdong = HdongUtil .huodong(aa); return hdong; } @Override protected void onPostExecute(List<HuoDong> result) { // TODO Auto-generated method stub super.onPostExecute(result); progressbar.setVisibility(View.GONE); contentListView.setAdapter(new HdAdapter(HDongActivity.this, result)); } }
写的很乱,主要是反省一下,看起来这东西真的太简单了,竟然花了一个多月,弱
