V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xloger
V2EX  ›  Android

请教一下大家在 Android 中一般怎么写这种页面?

  •  
  •   xloger · 2018-04-18 17:47:35 +08:00 · 10126 次点击
    这是一个创建于 2410 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如支付宝「我的」页面,账单、蚂蚁会员、总资产这一排,本身内容是静态且相似的,直接一个一个写或者用 Adapter 都感觉挺麻烦的:


    我目前想到的做法是这几种:

    1、 最简单也最常见地一个一个写下来,外面一个 LinearLayout,每个 item 如果能也用 LinearLayout 那还好,如果用 RelativeLayout 的话还得给一堆控件取 ID。

    2、 我比较期待的是一种自定义控件式的写法,类似
    ```
    <LinearLayout
    app:icon = "@drawable/icon"
    app:title = "账单"
    app:tip = "XXX 积分"
    />
    ```
    我还没尝试这种方式是否可行且工作量大不大。

    3、 写一个 Adapter 实现,这种应该是比较普遍的实现方式?封装一个类似 SimpleAdapter 的工具专门用于处理这种样式?

    4、 最近在用 Anko,感觉 DSL 似乎非常适合处理这种情况?



    哪么想请教下大家这种布局一般采用哪种方式呢?性能上会有什么差异么?(理论上 DSL 性能最好,但是 1、2 跟 3 比较呢)或者有什么更科学的方式写样式?
    10 条回复    2018-05-29 19:44:13 +08:00
    WordTian
        1
    WordTian  
       2018-04-18 18:23:53 +08:00 via Android
    这种肯定就是自定义个可复用的控件啦
    saberpowermo
        2
    saberpowermo  
       2018-04-18 18:25:42 +08:00
    RecyclerView 感觉比较好点。。
    DeweyReed
        3
    DeweyReed  
       2018-04-18 18:32:21 +08:00
    RecyclerView + 多种 ViewHolder,带头部、分割、不同 Layout。
    用一个方便的 RecyclerView 封装库,代码也就十几二十行。
    cs923
        4
    cs923  
       2018-04-18 18:42:59 +08:00 via Android
    账单那种可以用 textview+drawableleft+drawableright 实现
    somebody
        5
    somebody  
       2018-04-19 08:50:48 +08:00 via Android
    Recyclerview 或 ListView 都可以实现,view 分为三种 type:1 个人中心,2 简单的一行文字(如账单),3 灰色的宽分割线
    mcluyu
        6
    mcluyu  
       2018-04-19 09:52:16 +08:00
    原来 Android 里写这么个简单的 tableView 都这么麻烦啊 doge~~~~
    xloger
        7
    xloger  
    OP
       2018-04-19 10:47:04 +08:00
    @saberpowermo
    @DeweyReed
    @somebody
    感谢建议,原先我感觉写个 Adapter 会很麻烦,然后现在才意识到可以封装个库专门实现这种简单数据。
    Adapter: https://gist.github.com/xloger/c53939f3017967da99f5b32446bee036
    调用者: https://gist.github.com/xloger/0b71085abcf43fb5c4817fa34c728990
    当然现在还没去支持 item 多类型,之后加。果然写页面这种简单的东西反而更容易看出差距......
    不过我这种实现并没有利用到 ViewHolder findViewById 的缓存,对于这种数据量小的应该也不影响性能......
    xloger
        8
    xloger  
    OP
       2018-04-19 10:51:33 +08:00
    @mcluyu
    要直接实现是很简单,但是 Android 并没有提供基础的控件复用(只有个 include ),因此我对怎么复用比较好想听听其他人意见,现在问题解决了
    Codelike
        9
    Codelike  
       2018-05-29 18:54:59 +08:00
    BRVAH 了解一下
    xloger
        10
    xloger  
    OP
       2018-05-29 19:44:13 +08:00
    @Codelike #9 嗯,我去了解了一下,的确很方便,感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2481 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:36 · PVG 23:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.