这是我自己写了几个关于listview的小Demo,因为与分不清楚具体使用什么方法,所以进行了对比 ,总结出来以下两种适配的方法,后期还会总结点击事件的方法,希望可以帮助到大家,不总纠结在重要的问题上了。如果大家有更多的方法希望共同交流,我总结了两种方法,一种是自定义适配器,一种是使用SimpleAdapter适配器。

第一种:自定义适配器,以下是一些源码,大家可以用各种控件与listview进行适配,我用的是一个ImageView和一个TextView

1,先创建一个javaBean

class Picture {private String title;private int imageId;public Picture() {super();}public Picture(String title, int imageId) {super();this.title = title;this.imageId = imageId;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public int getImageId() {return imageId;}public void setImageId(int imageId) {this.imageId = imageId;}
}

2,设置listview的适配器,这里是第一种配置listview子条目的方法

class PictureAdapter extends BaseAdapter {private LayoutInflater inflater;private List<Picture> pictures;public PictureAdapter(String[] titles, int[] images, Context context) {super();pictures = new ArrayList<Picture>();inflater = LayoutInflater.from(context);for (int i = 0; i < images.length; i++) {//Picture类的构造函数传参Picture picture = new Picture(titles[i], images[i]);//把图片和文字添加到list集合中pictures.add(picture);}}
//重写BaseAdapter的方法@Overridepublic int getCount() {if (null != pictures) {return pictures.size();} else {return 0;}}@Overridepublic Object getItem(int position) {return pictures.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if (convertView == null) {convertView = inflater.inflate(R.layout.gridview_item, null);viewHolder = new ViewHolder();viewHolder.title = (TextView) convertView.findViewById(R.id.title);viewHolder.image = (ImageView) convertView.findViewById(R.id.image);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.title.setText(pictures.get(position).getTitle());viewHolder.image.setImageResource(pictures.get(position).getImageId());return convertView;}}class ViewHolder {public TextView title;public ImageView image;
}

3,设置条目的点击事件,这个点击事件是点击每一个图片跳转到另一个Activity中实现另外的功能,这里也可以帮助大家解决不会多界面跳转的问题

public class HomeActivity extends Activity {private GridView gridView;private String[] titles = new String[] { "电话", "短信", "存储", "QQ","对话框", "人品计算器", "浏览器", "请求码结果码", "计算器","音乐播放器" };private int[] images = new int[] { R.drawable.a, R.drawable.b,R.drawable.c, R.drawable.d, R.drawable.e, R.drawable.f,R.drawable.g, R.drawable.h, R.drawable.i,R.drawable.j};public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_home);gridView = (GridView) findViewById(R.id.gridview);PictureAdapter adapter = new PictureAdapter(titles, images, this);gridView.setAdapter(adapter);gridView.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView<?> parent, View v,int position, long id) { // Log.i("MainActivity",// "Position:" + position);switch (position) {case 0:Intent intent = new Intent(HomeActivity.this,PhoneActivity.class);intent.putExtra("id", images[position]);startActivity(intent);break;case 1:Intent intent1 = new Intent(HomeActivity.this,SmsActivity.class);// intent1.putExtra("id", images[position]);startActivity(intent1);break;case 2:Intent intent2 = new Intent(HomeActivity.this,SdcardActivity.class);startActivity(intent2);break;case 3:Intent intent3 = new Intent(HomeActivity.this,QqActivity.class);startActivity(intent3);break;case 4:Intent intent4 = new Intent(HomeActivity.this,DialogActivity.class);startActivity(intent4);break;case 5:Intent intent5 = new Intent(HomeActivity.this,RpCalcActivity.class);startActivity(intent5);break;case 6:Intent intent6 = new Intent(HomeActivity.this,WebActivity.class);startActivity(intent6);break;case 7:Intent intent7 = new Intent(HomeActivity.this,RequestCodeActivity.class);startActivity(intent7);break;case 8:Intent intent8 = new Intent(HomeActivity.this,ComputerActivity.class);startActivity(intent8);break;case 9:Intent intent9 = new Intent(HomeActivity.this,MusicActivity.class);startActivity(intent9);break;}}});}
}

第二种:使用SimpleAdapter配置

public class MainActivity extends Activity {private ListView myListView;private SimpleAdapter listitemAdapter;
String[]items={"通讯录","联系人","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录","通话记录"};
int[] images={R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myListView = (ListView) findViewById(R.id.listview01);ArrayList<HashMap<String, Object>> listitem = new ArrayList<HashMap<String,Object>>();for(int i=0;i<images.length-1;i++){HashMap<String, Object> map = new HashMap<String,Object>();map.put("itemText", images[i]);map.put("itemTitle", items[i]);listitem.add(map);listitemAdapter = new SimpleAdapter(this, listitem, R.layout.listview_item, new String[]{"itemTitle","itemText"}, new int[]{R.id.topTextView,R.id.bottomTextView});};myListView.setAdapter(listitemAdapter);myListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubRelativeLayout lr=    (RelativeLayout) arg1;TextView mText=(TextView) lr.getChildAt(1);Toast.makeText(getApplicationContext(), "你点击了第"+arg2+"项的"+mText.getText().toString(), 0).show();}});}

如果所有的子条目都是文字复用的话,就不用创建数组,直接在for循环中设置即可

  protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myListView = (ListView) findViewById(R.id.listview01);ArrayList<HashMap<String, Object>> listitem = new ArrayList<HashMap<String,Object>>();for(int i=0;i<images.length-1;i++){HashMap<String, Object> map = new HashMap<String,Object>();map.put("itemText", "item"+i);map.put("itemTitle", "条目"+i);listitem.add(map);                                                    //从一个联系条目的被添加名字值map集合的list集合   //到设置到布局控件上的id集合
listitemAdapter = new SimpleAdapter(this, listitem, R.layout.listview_item, new String[]{"itemTitle","itemText"}, new int[]{R.id.topTextView,R.id.bottomTextView});};

注:图片和文本的数目要保持一致,否则会出现脚标越界异常

listview中子条目的适配方式相关推荐

  1. c# ListView增加条目

    c# Listview增加条目时,若直接在属性中增加的item从第二列开始,第一列的设置需要设置text 下面是通过代码增加的方法 第一种方式 string[] row1 = { "s1&q ...

  2. ListView的四种优化方式

    ListView的四种优化方式 优化方式一: convertView的复用   第一种优化就是重用convertView,这也是最简单的一种优化方式,就是在Adapter类的getView方法中通过判 ...

  3. 屏幕适配方式都有哪些

    基本概念: 屏幕尺寸 屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米 比如常见的屏幕尺寸有2.4.2.8.3.5.3.7.4.2.5.0.5.5.6.0等 屏幕分辨率 屏幕分辨率是指在 ...

  4. android listview下拉刷新动画,ListView下拉刷新实现方式详解和改造(上)

    我们知道页面的下拉刷新目前基本已经成为智能移动终端的标配刷新方式.Twitter设计出现有的下拉刷新(在2013年申请了专利). 下拉刷新1.jpg 这一优美而又简单的刷新方式,很快使得各大系统纷纷效 ...

  5. 今日头条的布局和字体适配方式

    本文:https://www.jianshu.com/p/f1a61baf66a6 原文:一种极低成本的Android屏幕适配方式 - 字节跳动技术团队 文章目录 前言 原文最终方案 如何确保每个Ac ...

  6. Android AutoLayout全新的适配方式 堪称适配终结者

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49990941: 本文出自:[张鸿洋的博客] 一.概述 相信Android的开发 ...

  7. Xamarin.Forms: 无限滚动的ListView(懒加载方式)

    说明 在本博客中,学习如何在Xamarin.Forms应用程序中设计一个可扩展的无限滚动的ListView.这个无限滚动函数在默认的Xamarin.Forms不存在,因此我们需要为此添加插件.在这里我 ...

  8. ListView和条目点击事件、条目长按事件

    step1:创建一个LinearLayout线性布局,属性值为vertical 里面写一个ListView列表控件 <ListViewandroid:id="@+id/listView ...

  9. listview多条目 GridView+listview 侧滑 ,TabLayout .PullToRefreshListView PullToRefreshScrollV

    //效果图如下 //首先把所需要的依赖包导入  gson jar包.imageLoader jar包.design jar包,,,然后导入library,新建项目,把library导入项目中 添加权限 ...

最新文章

  1. KM(知识管理)与SharePoint Portal
  2. JavaScript onerror事件
  3. 链表用java实现简单单链表linkedlist
  4. 傅立叶变换、拉普拉斯变换、Z变换之间 篇一
  5. 为什么磁盘存储引擎用 b+树来作为索引结构?
  6. 互联网人才流向说明了什么
  7. Axure高保真web端后台管理系统/垃圾回收分类系统/垃圾回收高保真原型设计 /垃圾分类后台管理系统/垃圾回收分类平台//垃圾回收分类智慧管理系统/订单管理/财务管理/系统管理/库存管理/设备管理
  8. 通过分析等待类型解决系统产生问题
  9. python xpath提取td标签_Python Xpath 提取html整个元素(标签与内容)
  10. 论文的参考文献如何对齐。
  11. 创业公司操蛋的面试过程
  12. java间接调用_无法解析类型 java.util.Map$Entry。从必需的 .class 文件间接引用了它...
  13. 手机浏览器脚本知乎直接看不用下载app
  14. 渗透测试漏洞利用入门总结
  15. Unity Layer预设 默认设置Layer
  16. Linux就这个范儿 第14章 身在江湖
  17. MYSQL命令集大全
  18. 2步迁移PC端微信聊天记录
  19. ESP8266远程控制台灯(硬件软件详解)
  20. 测试台式计算机测试是否联通笔记本电脑,测试台式计算机测试(192.168.1.11)是否联通笔记本电脑(192.168.1.12),表示联通了的截图是 。...

热门文章

  1. 检波电路,简易rms电路波谷出现毛刺解决,容性负载导致信号出现尖峰,(电容滤波电路不规范导致波形不稳定)
  2. 1184: 零基础学C/C++184——吉祥数
  3. C++string中replace()替换函数
  4. 视频教程-[曾贤志]-Excel数据透视表与SQL技术-Office/WPS
  5. mac中关于Microsoft Word的一些设置
  6. 浅谈可控硅两端增加电阻和电容的作用
  7. 沉思录(一)学习本身就是一件孤独而又崇高的事业
  8. 力扣 2212. 射箭比赛中的最大得分
  9. 贴吧顶贴php脚步,贴吧干货:利用代码无限顶贴
  10. 软技能:代码之外的生存指南(读书总结)