Android ListView封装类

来源:互联网 发布:网络推广员有用吗 编辑:程序博客网 时间:2024/06/01 10:19

由SimpleAdapter启发写的封装类,使用的时候只需修改ItemInfo和ViewHolder 的属性,以及ViewHolder 的setItem方法即可

    //listitem数据类,用于填充到listitem中的数据    private class ItemInfo{        public String name;        public ItemInfo(String name){            this.name=name;        }    }    //与listitem内的控件一一对应    private class ViewHolder {          public TextView textview;          public Button   button;          /**初始化控件*/        public ViewHolder(View convertView){            button =(Button) convertView.findViewById(R.id.button);              textview = (TextView) convertView.findViewById(R.id.textView);          }        /**设置控件数据*/        public void setItem(ItemInfo itemInfo){            textview.setText(itemInfo.name);        }    }      // 重写adapter      private class ListItemAdapter extends BaseAdapter {          private ViewHolder holder;          private List<ItemInfo> itemInfo;  //ListView中要显示的数据        private Context context;        private int ItemLayoutID;//R.layout.xxxx_listitem        public ListItemAdapter(Context context,int ItemLayoutID,List<ItemInfo> item) {              this.context=context;            this.ItemLayoutID=ItemLayoutID;            this.itemInfo=item;        }          @Override          public int getCount() {              return itemInfo.size();          }          @Override          public Object getItem(int arg0) {              return itemInfo.get(arg0);          }          @Override          public long getItemId(int arg0) {              return arg0;          }          //重写getView(convertView重用)        @Override          public View getView(int position, View convertView, ViewGroup parent) {              if (convertView == null) {                  convertView = LayoutInflater.from(context).inflate(ItemLayoutID, null);                  holder = new ViewHolder(convertView);                  convertView.setTag(holder);              } else {                  holder = (ViewHolder) convertView.getTag();              }              holder.setItem(itemInfo.get(position));            return convertView;          }      }  

调用方法

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listview=(ListView) this.findViewById(R.id.listView1);        List<ItemInfo> list= new ArrayList<ItemInfo>();        list.add(new ItemInfo("111"));        list.add(new ItemInfo("222"));        list.add(new ItemInfo("333"));        ListItemAdapter adapter = new ListItemAdapter(this,R.layout.list_item,list);        listview.setAdapter(adapter);    }
0 0