Android列表用法之一:实战简单ListView

ListView这个列表控件,是我们在开发当中使用频率比较高的一个控件。
既然是使用频率比较高,那么我们就有必要将它的使用方式保存,方便以后直接复制粘贴,把注意力放在架构上面,不用经常做代码搬运工(重复搬运)。

当然Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter、SimpleCursorAdapter等。但是在日常的开发当中,我是从来不会使用系统自带的适配器。毕竟一个项目当中,大部分列表Item的高度、容纳的控件数量、控件类型、逻辑处理、事件的处理等等都是不同的,使用系统自带的完全不能胜任。

套用一句俚语:一切不以实际项目为例子的Sample都是耍*流*氓^_^

今天的简单实例为百度地图-收藏夹页面的收藏点列表的仿写(只是列表哟),下面我们先来看看原装正品效果图动画:
百度地图原版GIF

怎么样,够简单吧,不过虽然简单,却不能使用系统提供给我们的适配器来做,我们来自定义适配器
一、纵观全局—-我们先来分析一下页面有哪些元素
1、一个列表(费话,我们就是来做列表的!^_^)。
2、一个餐厅名称、一个收藏时间、一个右箭头。
3、一条分隔线(这一个千万忘不得)。
4、点击Item会有交互颜色变化。

二、技术选型
1、这一步是不可少的哈,因为实现列表,我们有多种方式,ListView可以,RecyclerView也可以,当然硬布局+ScrollView也可以(这一个估计没人这么做)等等。这里,我们使用ListView。没什么原因,就因为今天是ListView的实例。^_^
2、名称和时间肯定使用TextView了。右箭头使用ImageView,由于这个箭头只是一个标识作用,没有集成事件之类的,所以不会选择ImageButton、Button等控件。
3、分隔线,这个就有讲究了。我们仔细观察,这个分隔线是从左到右,横跨整个列表的。实现它的方法,至少有两种:(1)使用Listview自带的divder. (2)写一个View到Item布局当中。
如果这个分隔线不是横跨整个列表,而是有左边距或右边距呢,比如分隔线是和文字以及时间控件左对齐的呢,我们就只能写到Item布局当中了。
4、选择使用Selector。

三、码代码
1、构造数据,模拟好像是在线获取的数据,这里我们封闭一个数据获取的方法即可,所有的数据增删查改等都在此方法内进行。

    /**
     * 数据封装,模拟从网络上获取到的数据
     *
     * @return 返回数据列表
     */
    private List<RestaurantBean> getDatasFromNetwork() {
        for (int i = 0; i < Constants.PLACE.length; i++) {
            RestaurantBean restaurant = new RestaurantBean();
            restaurant.setPlace(Constants.PLACE[i]);
            restaurant.setTime(Constants.TIME[i]);
            datas.add(restaurant);
        }
        //刷新列表,如果是真实的网络数据,则放到请求回调函数当中使用。
        //注意如果是在异步线程中,应该怎么使用?它必须在主线程中执行!!
        listViewSimpleAdapter.notifyDataSetChanged();
        return datas;
    }

以下附方法内使用到的常量:

package oliver.zhantao.oliverproject.constants;

/**
 * 存放常量类
 *
 * Created by ZhanTao on 2017/4/17.
 */

public class Constants {
   

    //地点列表
    public static final String PLACE[] = {
        "德克士(新世幻环球中心店)", "肯德基(九方餐厅)", "第18区海鲜拼盘", "邓家面馆",
            "锦水缘餐厅", "麦地里(中海店)", "可可豆汤", "临江门火锅店",
            "若水河鲜", "自贡鸿鹤鲜锅兔", "又见曾毛肚老火锅"
    };

    //时间列表
    public static final String TIME[] = {
            "2017-04-08" , "2017-04-09", "2017-04-10", "2017-04-11",
            "2017-04-12", "2017-04-13", "2017-04-14" , "2017-04-15",
            
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值