- 浏览: 313293 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (228)
- ArcGis (4)
- UI设计 (32)
- SQLite (7)
- ListView (12)
- Handler_Thread (6)
- XML (5)
- Menu (7)
- TabHost (6)
- Inflater (2)
- Activity (5)
- SDCard (3)
- Dialog (7)
- Spinner (3)
- 设备信息 (2)
- 资源文件 (7)
- 多媒体 (7)
- 图片浏览 (5)
- 工具的使用 (3)
- Animation动画 (7)
- GIS (14)
- 软件发布 (4)
- GPS (2)
- 手机Feature开发 (6)
- 加密解密 (1)
- Time (2)
- JWeb (5)
- SQL (2)
- PhoneGap (3)
- JavaScript (3)
- Object-C入门 (7)
- Oracle (1)
- AutoCompleteTextView (1)
- APN (1)
- IOS开发 (12)
- 数据库工具 (3)
- UITableView (0)
- Arcgis for iOS (1)
最新评论
-
waterM:
...
DBVis 连接数据库配置 -
航空母舰:
上源码吧,差资源,都跑不起来!
ListView_split 分割 -
wade200:
学习了
启动另一个Activity并返回结果(附源码) -
AndLi:
里面的坐标被我写死了啊,你注释掉就可以了
GPS定位 -
kunlinchen2010:
求指教,QQ:446482624
GPS定位
/** * 主界面 * * @author lilin * @date 2011-12-12 下午11:13:20 * @ClassName: MainView */ public class MainView extends Activity { // 主界面的ListView private ListView mainListView; // 浏览部分的Adapter private ItemListViewAdp mytoolAdp; // 收藏部分的Adapter private ItemListViewAdp libraryAdp; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.mainview); initView(); } // 初始化 private void initView() { mainListView = (ListView) findViewById(R.id.HomeListView); } // 用可点击的项填充主界面上的ListView private void fillMainListView() { mytoolAdp = new ItemListViewAdp(this); libraryAdp = new ItemListViewAdp(this); // 声明MainListView的适配器 SplitListViewAdp mainListViewAdp = new SplitListViewAdp(this); mainListViewAdp.addItems("我的收藏", libraryAdp); mainListViewAdp.addItems("常用工具", mytoolAdp); mainListView.setAdapter(mainListViewAdp); // 初始化每一部分的内容 initItemContent(libraryAdp, mytoolAdp); // MainListView的单击事件 mainListView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> adapterView, View view, int index, long time) { IListViewItemClickListener listener = ((ItemsModel) adapterView .getAdapter().getItem(index)).getItemClickListener(); if (listener != null) { listener.itemClick(); } } }); } public void initItemContent(ItemListViewAdp item1, ItemListViewAdp item2) { /*-----------------------我的工具部分-----------------------------------*/ ArrayList<ItemsModel> mytoolList = new ArrayList<ItemsModel>(); // 搜索项: // 实现点击该项的事件接口 IListViewItemClickListener mainListViewClickListener = new IListViewItemClickListener() { public void itemClick() { ShowMsg.showToast(MainView.this, "点击了搜索"); } }; // 初始化MainItemModel:需要实现点击接口 ItemsModel mainItemModel = new ItemsModel(R.drawable.list_search, "搜索", mainListViewClickListener); mytoolList.add(mainItemModel); // 下载项: // 只用内存卡存在是才显示下载项 if (SDCard.hasSDcard()) { mytoolList.add(new ItemsModel(R.drawable.list_download, "下载", new IListViewItemClickListener() { public void itemClick() { ShowMsg.showToast(MainView.this, "点击了下载"); } })); } /*-----------------------我的收藏部分------------------------------------*/ ArrayList<ItemsModel> libraryList = new ArrayList<ItemsModel>(); libraryList.add(new ItemsModel(R.drawable.list_playlist, "歌曲列表", new IListViewItemClickListener() { public void itemClick() { // PlaylistView.launch(MainView.this, Mode.Normal); ShowMsg.showToast(MainView.this, "歌曲列表"); } })); // 热门歌曲项: libraryList.add(new ItemsModel(R.drawable.list_top, "热门歌曲", new IListViewItemClickListener() { public void itemClick() { ShowMsg.showToast(MainView.this, "点击了热门歌曲"); } })); // 电台项: libraryList.add(new ItemsModel(R.drawable.list_radio, "电台", new IListViewItemClickListener() { public void itemClick() { ShowMsg.showToast(MainView.this, "点击了电台"); } })); // 获得配置参数:用户名 final String userName = PreferenceManager.getDefaultSharedPreferences( this).getString("user_name", null); // 如果用户名不空,添加相册项 if (userName != null && userName.length() > 0) { libraryList.add(new ItemsModel(R.drawable.list_cd, "相册", new IListViewItemClickListener() { public void itemClick() { ShowMsg.showToast(MainView.this, "相册"); } })); } // 设置收藏部分的内容 item1.setList(libraryList); // 设置我的工具的内容 item2.setList(mytoolList); } protected void onResume() { fillMainListView(); super.onResume(); } }
适配器:
主适配器:
/** * MainListView的适配器 * * @author lilin * @date 2011-12-24 下午08:05:22 * @ClassName: SplitListViewAdp */ public class SplitListViewAdp extends BaseAdapter { // 每一部分 public final Map<String, Adapter> sections = new LinkedHashMap<String, Adapter>(); // 每一部分的标题 public final ArrayAdapter<String> sectiontitle; public final static int TYPE_SECTION_HEADER = 0; // 构造函数 public SplitListViewAdp(Context context) { sectiontitle = new ArrayAdapter<String>(context, R.layout.mainlistview_title); } // 添加项目 public void addItems(String itemname, Adapter adapter) { this.sectiontitle.add(itemname); this.sections.put(itemname, adapter); } public Object getItem(int position) { for (Object section : this.sections.keySet()) { Adapter adapter = sections.get(section); int size = adapter.getCount() + 1; // 检查position是否在当前的section if (position == 0) return section; if (position < size) return adapter.getItem(position - 1); // 否则跳到下一section position -= size; } return null; } // 获得部分的数量 public int getCount() { int total = 0; for (Adapter adapter : this.sections.values()) total += adapter.getCount() + 1; return total; } public int getViewTypeCount() { // assume that sectiontitle count as one, then total all sections int total = 1; for (Adapter adapter : this.sections.values()) total += adapter.getViewTypeCount(); return total; } public int getItemViewType(int position) { int type = 1; for (Object section : this.sections.keySet()) { Adapter adapter = sections.get(section); int size = adapter.getCount() + 1; // check if position inside this section if (position == 0) return TYPE_SECTION_HEADER; if (position < size) return type + adapter.getItemViewType(position - 1); // otherwise jump into next section position -= size; type += adapter.getViewTypeCount(); } return -1; } public boolean areAllItemsSelectable() { return false; } public boolean isEnabled(int position) { return (getItemViewType(position) != TYPE_SECTION_HEADER); } @Override public View getView(int position, View convertView, ViewGroup parent) { int sectionnum = 0; for (Object section : this.sections.keySet()) { Adapter adapter = sections.get(section); int size = adapter.getCount() + 1; // check if position inside this section if (position == 0) return sectiontitle.getView(sectionnum, convertView, parent); if (position < size) return adapter.getView(position - 1, convertView, parent); // otherwise jump into next section position -= size; sectionnum++; } return null; } @Override public long getItemId(int position) { return position; } }
部分适配器:继承了基础适配器
/** * MainListView的每一项的适配器 * * @author lilin * @date 2011-12-24 下午08:48:43 * @ClassName: SectionListViewAdp */ public class ItemListViewAdp // 继承了BaseListViewAdp extends BaseListViewAdp<ItemsModel> { public ItemListViewAdp(Activity context) { super(context); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { LayoutInflater inflater = mActivity.getLayoutInflater(); convertView = inflater.inflate(R.layout.mainlistview_item, null); holder = new ViewHolder(); holder.myimageview = (ImageView) convertView .findViewById(R.id.item_myimageview); holder.item_content = (TextView) convertView .findViewById(R.id.item_content); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // 设置item_content if (mArrayList.get(position).getContent() != null) { // 设置Text holder.item_content.setText(mArrayList.get(position).getContent()); } // 设置myimageview if (mArrayList.get(position).getImgID() != null) { // 有:就设置图片 holder.myimageview.setImageResource(mArrayList.get(position).getImgID()); } else { // 没有:就设置不可见 holder.myimageview.setVisibility(View.GONE); } return convertView; } static class ViewHolder { ImageView myimageview; TextView item_content; } }
基础适配器:
package com.lilin.splitlistview.adapter; import java.util.ArrayList; import android.app.Activity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; public abstract class BaseListViewAdp<T> extends BaseAdapter { protected ArrayList<T> mArrayList; protected Activity mActivity; protected ListView mListView; // 构造方法 public BaseListViewAdp(Activity mActivity) { this.mActivity = mActivity; } @Override public int getCount() { if (mArrayList != null) return mArrayList.size(); else return 0; } @Override public Object getItem(int position) { return mArrayList == null ? null : mArrayList.get(position); } @Override public long getItemId(int position) { return position; } @Override abstract public View getView(int position, View convertView, ViewGroup parent); public void setList(ArrayList<T> list) { this.mArrayList = list; notifyDataSetChanged(); } public ArrayList<T> getList() { return mArrayList; } public void setList(T[] list) { ArrayList<T> arrayList = new ArrayList<T>(list.length); for (T t : list) { arrayList.add(t); } setList(arrayList); } public ListView getListView() { return mListView; } public void setListView(ListView listView) { mListView = listView; } }
接口和Modal
package com.lilin.splitlistview.Interface; /** * ListView每一项单击事件的接口 * * @author lilin * @date 2011-12-24 下午08:51:08 * @ClassName: IMainListViewClickListener */ public interface IListViewItemClickListener { public void itemClick(); }
package com.lilin.splitlistview.modal; import com.lilin.splitlistview.Interface.IListViewItemClickListener; /** * 封装了主界面上ListView每一项的数据 * * @author lilin * @date 2011-12-24 下午06:49:33 * @ClassName: MainModel */ public class ItemsModel { // 图片 private Integer imgID; // 内容 private String content; // ID private String itemID; // 单击事件接口 private IListViewItemClickListener itemClickListener; // 构造方法 public ItemsModel(Integer imgID, String content, IListViewItemClickListener iMainItemClickListener) { this.imgID = imgID; this.content = content; itemClickListener = iMainItemClickListener; } public Integer getImgID() { return imgID; } public void setImgID(Integer imgID) { this.imgID = imgID; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getItemID() { return itemID; } public void setItemID(String itemID) { this.itemID = itemID; } public IListViewItemClickListener getItemClickListener() { return itemClickListener; } public void setItemClickListener( IListViewItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } }
发表评论
-
ListView_Syncpic 以异步形式加载图片
2011-12-22 20:55 755ListView形式预览图片:以异步形式加载图片 -
ListView_HS 实现水平+垂直双向滚动
2011-12-22 20:47 1279<?xml version="1.0&q ... -
ListView和CheckBox整合:分别响应对应的事件
2011-12-05 20:17 5639核心代码: // ListView的单击事件 imgL ... -
ListView 自定义Adapter
2011-10-20 22:01 897public class PriceListAdapter e ... -
ListView 非自定义Adapter
2011-10-20 10:05 708public class ReportPriceListAct ... -
ListView 和Button的结合
2011-10-15 09:10 900public class Main extends Ac ... -
ListView 分页 点击按钮加载实现
2011-10-15 09:10 678滴答滴答滴答滴答 -
ListView 分页 上一页,下一页的形式实现
2011-10-15 09:11 838分页实现 -
ListView形式预览图片
2011-10-03 17:05 2556public class Main exten ... -
extends ListActivity
2011-10-02 10:26 2337package com.epoint.listview; ... -
ListView and CheckBox
2011-09-30 09:41 1079main.xml <?xml version=&q ...
相关推荐
C 语言实现 linux pwd 命令内含源码以及说明书可以自己运行复现.zip
2024年中国变焦LED手电筒行业研究报告
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
ffmpeg 结合 SDL 编写播放器内含源码以及说明书可以自己运行复现.zip
2024-2030中国OPzV胶体电池市场现状研究分析与发展前景预测报告
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
2024年中国齿轮离心鼓风机行业研究报告
python教程-03-标签属性的获取和设置.ev4.rar
安装说明 系统要求 PHP要求5.6版本以上,低于5.6版本无法运行 支持php7 addons,application,config,extend,public,runtime,template,uploads 目录必须要有写入权限 777 网站必须配置好伪静态(.htaccess为Apache伪静态配置文件,kyxscms.conf为Nginx伪静态配置文件) 宝塔面板要在 软件 php 设置里安装扩展 fileinfo
基于java的高校毕业设计选题管理系统论文
当前,以微服务、DevOps、容器、多云业务管理为代表的云原生技术已经广泛成熟应用,成为加速企业数字化业务高效创新、实现企业数字化转型的最佳技术支撑。而信创支持、国产化支持,是中国企业数字化转型不得不满足的基本要求。更有专家指出,在关乎企业生存的必选项“数字化转型”以及国家信创战略的共同冲击下,企业需要改变现有业务和IT的架构,更快速地应对挑战、响应变化,增强自身的竞争力。 信创微服务平台建设指南应当综合考虑当前的技术发展趋势、企业及用户的需求,以及平台的可持续发展能力。 《信创微服务平台建设指南》可参考文章:https://mp.weixin.qq.com/s/cfJH72JFxDTHCPsfFWMUqA
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
上文提供了一个基础的Python爬虫示例,旨在从CSDN(一个知名的技术博客平台)上爬取特定文章的内容。这个示例代码展示了使用requests库发送HTTP请求,以及使用BeautifulSoup库解析HTML内容的基本流程。 步骤详解 导入必要的库: requests库用于发送HTTP请求。 BeautifulSoup库用于解析HTML内容。 time库用于控制请求之间的延迟。 设置目标URL和请求头: 目标URL是想要爬取的CSDN文章的URL,这里用占位符'https://blog.csdn.net/some_user/article/details/some_article_id'表示,实际使用时需要替换为真实的URL。 请求头(headers)通常用于模拟浏览器行为,避免被目标网站识别为爬虫。这里设置了User-Agent字段。 发送请求并获取响应内容: 使用requests.get()方法发送GET请求到目标URL,并传入请求头。 使用response.raise_for_status()方法检查请求是否成功。如果响应状态码不是200(成功),则抛出异常。 解析HTML内
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
说明: 上文提供了一份关于毕业设计论文写作技巧的总结,旨在帮助学生在完成这一重要学术任务时更加系统、高效地进行。以下是对这份总结的详细说明: 一、目的与重要性 毕业设计论文不仅是学生学术生涯中的一个重要里程碑,也是检验学生综合运用所学知识、独立研究和解决问题能力的重要标准。因此,掌握一定的写作技巧对于顺利完成论文写作至关重要。 二、写作技巧总结 明确研究主题和目标: 学生首先需要确定自己的研究领域和研究方向,确保研究的主题具有实际意义和研究价值。 明确研究目标有助于学生在整个研究过程中保持清晰的方向,确保研究的深入和全面。 充分收集和整理资料: 学生需要通过广泛阅读相关领域的文献,了解研究现状和发展趋势,为论文写作提供充分的理论支撑。 对收集到的资料进行整理和分类,有助于提取有用信息,为论文写作提供有力的论据和支撑。 撰写论文大纲: 论文大纲是论文写作的蓝图,它有助于学生清晰地规划论文的结构和内容。 通过制定合理的大纲,学生可以在写作过程中保持逻辑严密、条理清晰。 论文写作注意事项: 引言部分需要简要介绍研究背景、意义、目的和范围,引起读者的兴趣。 正文部分需要详细阐述研究方
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
单片机开发资源,基于51单片机的开发程序,供学习参考。