适配器的Java类
- package com.app.adapter;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import android.R.integer;
- import android.content.Context;
- 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.app.test01.R;
- public class MyWeixinJSON extends BaseAdapter{
- private LayoutInflater mInflater;// 动态布局映射
- private JSONArray list;
- private Context context;
- private int i = 0;
- public MyWeixinJSON(JSONArray list,Context context){
- this.list = list;
- this.context = context;
- this.mInflater = LayoutInflater.from(context);
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return list.length();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- convertView = mInflater.inflate(R.layout.item_weixin, null);//根据布局文件实例化view
- try {
- JSONObject jObject = list.getJSONObject(position);
- TextView title = (TextView) convertView.findViewById(R.id.title);//找某个控件
- title.setText(jObject.get("title").toString());//给该控件设置数据(数据从集合类中来)
- TextView time = (TextView) convertView.findViewById(R.id.time);
- time.setText(jObject.get("time").toString());
- TextView info = (TextView) convertView.findViewById(R.id.info);
- info.setText(jObject.get("info").toString());
- ImageView img = (ImageView) convertView.findViewById(R.id.img);
- img.setBackgroundResource((Integer)jObject.get("img"));
- } catch (Exception e) {
- // TODO: handle exception
- }
- return convertView;
- }
- }
Activity类
- package com.app.test01;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ListView;
- import com.app.adapter.MyWeixinJSON;
- import com.app.adapter.MyWeixinList;
- public class ListViewBase extends Activity{
- private ListView lv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.weixin);
- lv = (ListView) findViewById(R.id.lv);
- MyWeixinJSON mJson = new MyWeixinJSON(getJSONArray(),this);
- lv.setAdapter(mJson);
- }
- private JSONArray getJSONArray(){
- JSONArray jsonArray = new JSONArray();
- try {
- for (int i = 1; i <= 30; i++) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("title", "姓名"+i);
- jsonObject.put("time", "9月29日");
- jsonObject.put("info", "我通过了你的好友验证请求,现在我们可以开始对话啦");
- jsonObject.put("img", R.drawable.special_spring_head2);
- jsonArray.put(jsonObject);
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- return jsonArray;
- }
- }
ListView的性能优化
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- System.out.println("正在渲染第"+position+"行 +++ "+ i++);
- OneView oneView;
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.item_weixin, null);//根据布局文件实例化view
- oneView = new OneView();
- oneView.title = (TextView) convertView.findViewById(R.id.title);//找某个控件
- oneView.time = (TextView) convertView.findViewById(R.id.time);
- oneView.info = (TextView) convertView.findViewById(R.id.info);
- oneView.img = (ImageView) convertView.findViewById(R.id.img);
- convertView.setTag(oneView);//把View和某个对象关联起来
- } else {
- oneView = (OneView) convertView.getTag();
- }
- JSONObject jObject = null;
- try {
- jObject = list.getJSONObject(position);//根据position获取集合类中某行数据
- oneView.title.setText(jObject.get("title").toString());//给该控件设置数据(数据从集合类中来)
- oneView.time.setText(jObject.get("time").toString());
- oneView.info.setText(jObject.get("info").toString());
- oneView.img.setBackgroundResource((Integer)jObject.get("img"));
- } catch (Exception e) {
- // TODO: handle exception
- }
- return convertView;
- }
- /** 把每行布局文件的各个控件包装成一个对象 */
- private class OneView{
- TextView title;
- TextView time;
- TextView info;
- ImageView img;
- }