public
class
AndroidGraphics2DTutorial
extends
ListActivity {
private
static
final
String SAMPLE_CATEGORY
=
"com.pstreets.graphics2d.SAMPLE_CODE"
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setListAdapter(
new
SimpleAdapter(
this
, getData(),
android.R.layout.simple_list_item_1,
new
String[] {
"title"
},
new
int
[] { android.R.id.text1 }));
getListView().setTextFilterEnabled(
true
);
}
protected
List getData() {
List<Map> myData =
new
ArrayList<Map>();
Intent mainIntent =
new
Intent(Intent.ACTION_MAIN,
null
);
mainIntent.addCategory(SAMPLE_CATEGORY);
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(mainIntent,
0
);
if
(
null
== list)
return
myData;
String[] prefixPath;
prefixPath =
null
;
int
len = list.size();
Map<String, Boolean> entries =
new
HashMap<String, Boolean>();
for
(
int
i =
0
; i < len; i++) {
ResolveInfo info = list.get(i);
CharSequence labelSeq = info.loadLabel(pm);
String label = labelSeq !=
null
? labelSeq.toString()
: info.activityInfo.name;
String[] labelPath = label.split(
"/"
);
String nextLabel = prefixPath ==
null
? labelPath[
0
]
: labelPath[prefixPath.length];
if
((prefixPath !=
null
? prefixPath.length :
0
)
== labelPath.length -
1
) {
addItem(myData,
nextLabel,
activityIntent(
info.activityInfo.applicationInfo.packageName,
info.activityInfo.name));
}
else
{
if
(entries.get(nextLabel) ==
null
) {
addItem(myData, nextLabel, browseIntent(nextLabel));
entries.put(nextLabel,
true
);
}
}
}
Collections.sort(myData, sDisplayNameComparator);
return
myData;
}
private
final
static
Comparator<Map> sDisplayNameComparator
=
new
Comparator<Map>() {
private
final
Collator collator = Collator.getInstance();
public
int
compare(Map map1, Map map2) {
return
collator.compare(map1.get(
"title"
), map2.get(
"title"
));
}
};
protected
Intent activityIntent(String pkg, String componentName) {
Intent result =
new
Intent();
result.setClassName(pkg, componentName);
return
result;
}
protected
Intent browseIntent(String path) {
Intent result =
new
Intent();
result.setClass(
this
, AndroidGraphics2DTutorial.
class
);
return
result;
}
protected
void
addItem(List<Map> data, String name, Intent intent) {
Map<String, Object> temp =
new
HashMap<String, Object>();
temp.put(
"title"
, name);
temp.put(
"intent"
, intent);
data.add(temp);
}
@Override
protected
void
onListItemClick(ListView l, View v,
int
position,
long
id) {
Map map = (Map) l.getItemAtPosition(position);
Intent intent = (Intent) map.get(
"intent"
);
startActivity(intent);
}
}
相关推荐
Android数据绑定的一个Demo程序,包括数据绑定和事件绑定
Android Data Binding结合RecyclerView的使用
Data Binding 用户指南(Android): MVVM on Android: What You Need to Know : 一、初体验 1.在xml里调整根元素为layout,并添加data元素描述一个user的变量属性,以及view元素来写文件布局 2.在data元素的...
视图绑定ViewBinding使用指南(Java版)修改build.gradle修改java代码注意事项工程代码 Android Studio 3.6 Canary 11 ...下面简单介绍下如何使用ViewBinding: 修改build.gradle 将 viewBinding 元素添加到其 build.gr
以下是Android Architecture Components的优势: ...Android Architecture Components中的Data Binding库可以帮助开发者将数据绑定到UI控件上,以减少手动设置UI控件的代码量,提高开发效率。 5. 易于学习和使用
Data Binding Validator by Ilhasoft The Data Binding Validator makes it easy and quick to validate fields in forms using data binding framework. Download Step 1: Add it in your root build.gradle at ...
RecyclerView +数据绑定示例简单样本直接将LiveData与数据绑定一起使用<? xml version = " 1.0 " encoding = " utf-8 " ?>< layout xss=removed xss=removed> < data> < variable xss=removed xss=removed> &...
本篇文章主要介绍了Android DataBinding的官方双向绑定示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET By Brian Noyes ............................................... Publisher: Addison Wesley ...
本文主要介绍Android Data Binding数据绑定的知识,这里整理了详细的资料及简单示例代码帮助大家学习理解此部分知识,有需要的小伙伴可以参考下
Android Data Binding实战-入门篇学习笔记,包含实例代码。 基于 Android Studio平台。
主要介绍了Android Data Binding 在 library module 中遇到错误及解决办法的相关资料,需要的朋友可以参考下
你好,Android数据绑定用于数据绑定的简单Android Base项目基本上,“ Hello World”示例/基础项目转换为绑定到TextView的String。 用作测试数据绑定的游乐场
Data binding demo提交 如何通过Data Binding提升撸码逼格(基础篇) 查看地址: 如何通过Data Binding提升撸码逼格(进阶篇) 查看地址: 如何通过Data Binding提升撸码逼格(高级篇 - 简单阅读源码) 查看地址:
These tutorials describe how to map your classes to your tables manually (rather than with an automated tool like SqlMetal) so that you can have support for M:M relationships and data binding against ...
MVVM Android 模型:Android中的模型可以是来自应用程序内部(包括共享首选项),数据库(在Cursor中或通过其他数据访问对象)或外部(通过Cursor到其他Data Contract)的数据。 视图:GUI中显示的所有元素,包括...
Android数据绑定 一个演示项目,展示android数据绑定库的用法。 要求 API等级7+ Android Studio 1.3.0以上 数据绑定支持库(类路径'com.android.databinding:dataBinder:1. +')
Binding.scala 是 Scala 上的数据绑定框架,既可以运行在 JVM 上,也可以通过 Scala.js 编译成 JavaScript 运行在 Node.js 或者浏览器中。Binding.scala 也是一套动态页面开发框架,使你可以直接在代码中内嵌 ...
Android Data Binding Adapter for ListView and RecyclerView..zip,使用新的android数据绑定框架将集合绑定到listviews和recyclerviews的简单方法
AndroidDataBindingExample, Android Data Binding 代码实战