Pro Android学习笔记(一三九):List Widgets(1):概述
来源:互联网 发布:单片机产生正弦波程序 编辑:程序博客网 时间:2024/04/29 10:23
文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei。
通过Remote view来对widget的views进行设置,对于List和grid,如何操控里面的子view?本学习笔记开始,将探讨这个问题。
Remote Views
我们知道不能直接获取RemoteViews的对象,Remote Views对象构造函数含有layout文件参数。在Android4.4,支持remote views的有FrameLayout、LinearLayout、RelativeLayout、AnalogClock、Button、Chronometer、 ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、 GridView、StackView、AdapterViewFlipper,其中包括集合ListView和GridView。要知道某个View是否看作为RemoteView,可以在Eclipse中查看解释,如下图所示:
小例子
小例子如图所示。Widget是一个list view,上下各有一个text view,利用FrameLayout,如果ListView有内容,显示ListView,否则显示Text View,写明无内容。当点击list中的某个item,触发弹出Toast。
Android通过Service来处理List Widget中List item,这个Service是RemoteViewsService类,如何构建remote 子view,是通过RemoteViewsFactory类。
RemoteViewsFactory作用类似于在ListView中的自定义Adapter,对ListView中的子View进行创建和处理。RemoteViewsFactory是Adapter,对Remote view的每个item的数据进行设置,可视为RemoteViewsAdapter。
RemoteViewsService是Service,由AppWidgetProvider开启,用来绘制list中的子view。Android对进行很好的封装,继承类中只需要返回RemoteViewsFactory对象。
为widget准备含ListView的remote layout
下面是widget的remote layout文件。在FrameLayout中含有连个view,一个是ListView,一个TextView,根据item的数目,有则显示ListView,无则显示TextView。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout …… >
<TextView …… android:layout_height="30dp" android:layout_weight="0"/>
<FrameLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_gravity="center">
<ListView android:id="@+id/listwidget_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView android:id="@+id/listwidget_empty_tv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:visibility="gone"
android:textColor="#FFFFFF"
android:text="Empty Records View"
android:textSize="20sp"/>
</FrameLayout>
<TextView …… android:layout_height="30dp" android:layout_weight="0"/>
</LinearLayout>
小例子代码在:Pro Android学习:list widget小例子
相关链接:我的Android开发相关文章
- Pro Android学习笔记(一三九):List Widgets(1):概述
- Pro Android学习笔记(一四十):List Widgets(2):App Widget Provider
- Pro Android学习笔记(一三五):Home Screen Widgets(1):关于Widget
- Pro Android学习笔记(一四一):List Widgets(3):Remote views Service和Factory
- Pro Android学习笔记(三九):Fragment(4):基础小例子-续
- Pro Android学习笔记(一三七):Home Screen Widgets(3):配置Activity
- Pro Android学习笔记(一三八):Home Screen Widgets(4):App Widget Provider
- Android学习笔记(三九):资源resource(下)
- Android学习笔记(三九):资源resource(下)
- Pro Android学习笔记(一三六):Home Screen Widgets(2):Widget定义
- Android学习笔记:Home Screen Widgets(1):关于Widget
- Pro Android学习笔记(一):Android平台
- Java for Web学习笔记(三九):Filter(1)用途、定义和顺序
- Android学习笔记:搜索(一)- 概述
- Pro Android学习笔记(一七一):说在最后
- Android学习笔记:Home Screen Widgets(2):关于Widget
- Pro *C/C++学习笔记(一)
- Pro *C/C++学习笔记(一)
- Week7-2三个正整数的最大值
- 黑马程序员-.NET-关于黑马基础试题最后一题解答思想
- 第八周项目五——定期存款利息计算器(switch语句)
- erlang 使用callback自定义行为模式
- sql 刚刚插入,引用插入记录的ID
- Pro Android学习笔记(一三九):List Widgets(1):概述
- Linux 信号signal处理机制
- js 阻止默认浏览器行为和阻止事件冒泡
- android .apk 混淆代码
- 创建星宿与生日对照的数组
- 有计划的范围
- 需要注意的地方
- PHP 正则表达式
- C++ 学习笔记_0014_函数(简单模拟银行ATM系统)