adapter 适配器的学习

baseAdapter:四大接口

1.getCount()  ---item数量

2.getItem(int position)---返回position

3. getItemId(int position)---返回第几号数据

4.getView(int position, View convertView, ViewGroup parent);  

 position就是位置,从0开始

convertView是Spinner,ListView中每一项要显示的view

parent就是父窗体了,也就是Spinner,ListView,GridView了

通常return 的view也就是convertView

在4中,通常为了效率,先判断contentView之前是否已经创建,实例:

  1.  @Override  
  2.     public View getView(int position, View convertView, ViewGroup parent) {  
  3.         ViewHolder viewHolder = null;  
  4.         if (convertView == null) {  
  5.             viewHolder = new ViewHolder();  
  6.             convertView = mInflater.inflate(R.layout.list_item, null);  
  7.             viewHolder.id = (TextView) convertView.findViewById(R.id.tv_id);             
  8.             convertView.setTag(viewHolder);  
  9.         } else {  
  10.             viewHolder = (ViewHolder) convertView.getTag();  
  11.         }  
  12.         viewHolder.id.setText(list.get(position).getId()); 
  13.         return convertView;  
  14.     }  

notifyDataSetChanged();当数据有变化时可以调用,刷新界面。


------------------------------------------------

baseAdapter---》ArrayAdapter:

构造函数:

 /**
129         * Constructor
130         *
131         * @param context The current context.
132         * @param resource The resource ID for a layout file containing a layout to use when
133         *                 instantiating views.
134         * @param textViewResourceId The id of the TextView within the layout resource to be populated
135         * @param objects The objects to represent in the ListView.
136         */
137        public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) {
138            init(context, resource, textViewResourceId, Arrays.asList(objects));
139        }
参数:1  2  3  4
1 context
2 resource是指布局文件item。。。当item布局文件只有一个textView时,第三个参数textViewResourceId可无视内部认为是0
3 textViewResourceId指  上面resource文件中的textView的id
4 objects   数据数组的话自动转为list   。没有的话认为是没有数据 就是new ArrayList<T>()
ArrayAdapter(Context context, int textViewResourceId)----》init(context, textViewResourceId, 0, new ArrayList<T>());
ArrayAdapter(Context context, int resource, int textViewResourceId)---》init(context, resource, textViewResourceId, new ArrayList<T>());
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int textViewResourceId, List<T> objects) 
ArrayAdapter(Context context, int textViewResourceId, T[] objects)--》init(context, textViewResourceId, 0, Arrays.asList(objects)); 以上是相关构造函数
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);下拉视图用 simple_spinner_dropdown_item 填充
-----------
SimpleAdapter:
构造函数:
/**
065         * Constructor
066         * 
067         * @param context      The context where the View associated with this SimpleAdapter is running
068         * @param data A List of Maps.     Each entry in the List corresponds to one row in the list. The
069         *        Maps contain the data for each row, and should include all the entries specified in
070         *        "from"
071         * @param resource     Resource identifier of a view layout that defines the views for this list
072         *        item. The layout file should include at least those named views defined in "to"
073         * @param from A list of column names that will be added to the Map associated with each
074         *        item.
075         * @param to The views that should display column in the "from" parameter. These should all be
076         *        TextViews. The first N views in this list are given the values of the first N columns
077         *        in the from parameter.
078         */
079        public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,  int resource, String[] from, int[] to)
参数:1.2.3.4
1.context
2.data   链表,节点是Map 用法:
	Map<String,Object> item;
item=new HashMap<String,Object>();
item.put("姓名", "张三小朋友");
item.put("性别", "男");
	data= new ArrayList<Map<String,Object>>();	
data.add(item);
3.resource  Item布局文件
4.from  new String[]{"key1","key2"}   data中的数据key值
5.to new int[]{R.id.ve_id_1,R.id.ve_id2}   Item布局中对应的空间id
-----------------------------------疑问-----------------------

刷新规范用notifyDataSetChanged(),但该 方法有时候会因为自定义的adapter里的list引用而失效,委屈为什么???

重新new adapter l再 setadapter()方法不会失效;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值