自定义listview数据源adapter时可以继承的类有哪些

 我来答
好程序员
2016-05-02 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部

    Android自定义ListView有下面三个步骤:

第一步:准备主布局文件、组件布局文件等
第二步:获取并整理数据
第三部:绑定数据,这里我们是通过自己编写Adapter类来完成的

自定义listview数据源adapter时可以继承的类有3个,分别如下:

 BaseAdapter、SimpleAdapter、ArrayAdapter

1、BaseAdapter

这个是使用到最多的,也是实现功能出来的界面效果是最为明显的。

继承BaseAdapter 是需要实现4个方法的:

 @Override  
    public int getCount() {  
        return data.size();  
    }  
    /** 
     * 获得某一位置的数据 
     */  
    @Override  
    public Object getItem(int position) {  
        return null;  
    }  
    /** 
     * 获得唯一标识 
     */  
    @Override  
    public long getItemId(int position) {  
        return position;  
    }  
  
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
           
        } 
    }

getCount()用来获取数据的长度,getItem(int position)用来获取某一位置的数据,getItemId(int position)用来获取唯一标识 ,最后getView(int position, View convertView, ViewGroup parent)也是最重要的一步,是用来获取返回每一个item的数据。

2、SimpleAdapter

SimpleAdapter使用起来非常方便而且简单,使用SimpleAdapter需要先保存数据,然后保存的数据再通过与写的XML文件中的ID进行绑定即可显示在界面。

   

List<HashMap<String, Object>> personList ;
//list中存放的是map  而map中每个key是属性名称,value是person中的属性值  
personList = new ArrayList<HashMap<String, Object>>();
//循环遍历list,将每一个person加入到map中
for (Person p : list) {
HashMap<String,Object> map=new HashMap<String, Object>();
map.put("ida", p.getId());
map.put("namea", p.getName());
map.put("balancea", p.getBalance());
personList.add(map);
}
//为ListView添加adapter,simpleadapter中第二个参数是List<HashMap<String, Object>>
//new String[] { "ida", "namea", "balancea"}代表map中的键值,new int[] 
{ R.id.personid, R.id.balance, R.id.name }
//代表R.layout.item,中的textView的id
view.setAdapter(new SimpleAdapter(getApplicationContext(), personList,
R.layout.item, new String[] { "ida", "namea", "balancea" },
new int[] { R.id.personid, R.id.balance, R.id.name }));

进行绑定后即可显示在界面。

3、ArrayAdapter

ArrayAdapter是使用的最少的一种,因为只能用来显示一个纯文本list。

Aus芳菲
2016-04-04 · TA获得超过648个赞
知道小有建树答主
回答量:355
采纳率:33%
帮助的人:312万
展开全部
规范用notifyDataSetChanged(),但该 方法有时候会因为自定义的adapter里的list引用而失效,setadapter()方法不会失效;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式