- 浏览: 312556 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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 751ListView形式预览图片:以异步形式加载图片 -
ListView_HS 实现水平+垂直双向滚动
2011-12-22 20:47 1272<?xml version="1.0&q ... -
ListView和CheckBox整合:分别响应对应的事件
2011-12-05 20:17 5638核心代码: // ListView的单击事件 imgL ... -
ListView 自定义Adapter
2011-10-20 22:01 896public class PriceListAdapter e ... -
ListView 非自定义Adapter
2011-10-20 10:05 705public class ReportPriceListAct ... -
ListView 和Button的结合
2011-10-15 09:10 897public class Main extends Ac ... -
ListView 分页 点击按钮加载实现
2011-10-15 09:10 674滴答滴答滴答滴答 -
ListView 分页 上一页,下一页的形式实现
2011-10-15 09:11 833分页实现 -
ListView形式预览图片
2011-10-03 17:05 2553public class Main exten ... -
extends ListActivity
2011-10-02 10:26 2334package com.epoint.listview; ... -
ListView and CheckBox
2011-09-30 09:41 1075main.xml <?xml version=&q ...
相关推荐
Android应用源码之listView_listView
解决了listview刷新后重绘的闪烁,用此方法后,不再闪烁。
listview功能扩展-自定义特定列编辑,同时与键盘配合移动列
viewpage,Fragment,FragmentAcctivity的使用。avtivity的启动并返回值,listview的优化
Delphi 实现文字透明外观圆角的ListView数据列表
自定义listview_QQ_2014_0520
用C#编写的WPF文件,实现简单的图像显示功能,主要利用ListView控件做的图像浏览器
listview排序VC++, VC编写的listview按列排序
PopupWindow + ListView + Singleselect
Delphi 10_delphilistview_ListView扩展源码_ListView_源码.zip
一个可以选择一行数据,可以排序,可以更改背景颜色的小程序.从网上得来的启发希望能给大家带来一些帮助,
Delphi 10_delphilistview_ListView扩展源码_ListView_源码.rar
支持缩略图的VB Listview控件使用实例,在Listview中使用图标来显示各项数据
.net下 ListView_控件属性与方法
android listview gridview gallery 等的综合demo
ListView_ViewPager01
ListView_上拉下拉_刷新_不刷新特效Test
Android_ScrollView与ListView_GridView共存冲突解决方案
并排ListView_高仿京东分类列表,代码方式设置布局宽高实现Listview的布局,解决更改item背景色时导致item内容不居中
Android:利用EditText和ListView_实现动态信息检索