ListView的时候通常会使用SimpleAdapter创建适配器,但是这个适配器依赖资源配置文件,一旦我们的工程不允许使用资源文件而必须用Java代码手工创建ListView的时候,就很难办了。
其实我们可以看下SimpleAdapter的源代码,其中只是用LayoutInflater将传入的资源文件id解析成了View,然后做了一系列的工作将相应的View Item和数据集绑定,我们只需要参照SimpleAdapter实现一个我们自己的Adapter即可,直接使用我们手工创建的ItemView类来构造Item.
几个要点:
1.自定义类实现ListView的Item的布局(继承自View或其合适的子类);
2.自定义类实现Adapter的功能,将Item和给定数据集绑定(继承自BaseAdapter,并重写一些方法,最重要的方法为getView(),一个参考实现:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
// We create our own View Item at here.
v = new FriendListViewItem(mContext);
} else {
v = convertView;
}
bindView(v, position);
return v;
}
private void bindView(View view, int position) {
final Map<String, String> dataSet = mData.get(position);
if (dataSet == null) {
return;
}
FriendListViewItem item = (view instanceof FriendListViewItem) ? (FriendListViewItem) view
: null;
if (item == null) {
return;
}
item.setValue(dataSet);
}
完整Demo可参考附件工程,很简单
分享到:
相关推荐
1.3.3 使用代码隐藏页面 24 1.3.4 处理页面事件 27 1.3.5 使用Page.IsPostBack属性 29 1.3.6 调试和跟踪ASP.NET页面 30 1.3.7 跟踪页面执行 33 1.4 安装ASP.NET Framework 35 1.5 小结 37 第2章 使用标准控件 38 ...
通常,为每个新功能创建这些组件需要大量手工编写和调试代码,而appBase代码生成器则通过自动化这一过程,显著提升了开发者的生产力。 **使用方法**: 1. **打包为jar**:首先,你需要将项目的源代码打包成一个可...
手工创建项目需要用户自行配置项目环境并准备必要的项目资源。而通过向导创建项目则可以简化这一过程,用户只需遵循向导的指示,便能快速生成一个基础的SOUI项目。SOUIEditor是一个可视化的编辑工具,可用于生成...