博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android控件学习之listview
阅读量:6945 次
发布时间:2019-06-27

本文共 5488 字,大约阅读时间需要 18 分钟。

listview用来展示列表数据

一、entries生成数据

1  

arrays.xml的配置

1 
2
3
4
android
5
think in java
6
我的未来不是梦
7
8

效果显示

 

二、ArrayAdapter生成数据

布局xml的配置

1 

android中的代码

1 ListView listView = (ListView) findViewById(R.id.list1);2         String teches[] = { "android", "java", "oracle" };3         ArrayAdapter
adapter = new ArrayAdapter
(this,4 android.R.layout.simple_list_item_1, teches);5 listView.setAdapter(adapter);

这里需要注意的是arrayadapter的第二个参数,有多少选择,这里不做深入讨论

三、继承ListActivity生成数据

1 public class ListView2 extends ListActivity{ 2  3     @Override 4     protected void onCreate(Bundle savedInstanceState) { 5         // TODO Auto-generated method stub 6         super.onCreate(savedInstanceState); 7          8         String arrs[]={"aa","bb"}; 9         ArrayAdapter
adapter=new ArrayAdapter
(this, android.R.layout.simple_list_item_1,arrs);10 setListAdapter(adapter);11 12 13 }14 }

这里需要注意的是无需指定一个布局xml

四、SimpleAdapter生成数据

xml布局

 

1 
3 4
6 7
9
11 12
14 15
16 17

android中的代码

1 public class ListView3 extends ListActivity { 2  3     @Override 4     protected void onCreate(Bundle savedInstanceState) { 5         // TODO Auto-generated method stub 6         super.onCreate(savedInstanceState); 7  8         SimpleAdapter adapter = new SimpleAdapter(this, getData(), 9                 R.layout.listview3, new String[] { "img", "title", "content" },10                 new int[] { R.id.iamgeview1, R.id.title, R.id.content });11         this.setListAdapter(adapter);12 13     }14 15     int images[] = new int[] { R.drawable.ferrari, R.drawable.lamborghini,16             R.drawable.porsche };17 18     public List
> getData() {19 List
> datas = new ArrayList
>();20 for (int i = 0; i < images.length; i++) {21 Map
map = new HashMap
();22 map.put("img", images[i]);23 map.put("title", "superCar" + i);24 map.put("content", "superCar description" + i);25 datas.add(map);26 }27 return datas;28 }29 30 }

效果图

由于图片比较大,造成展示的效果不是很好,姑且先如此吧

五、自定义BaseAdapter生成数据

这里需要说明的是,实际开发中,自定义baseAdapter来完成需求是很常用的,同时也是listview真正需要掌握的地方

自定义好处在于可以灵活布局

假设现在我们有一个需求,那就是给list中的每条记录添加一个button控件,并且添加事件,用之前的方式就无法满足我们的需求

对比用SimpleAdapter的方式

效果图先上

布局xml

1 
3 4
6 7
9
11 12
14 15
16 17
19 20
1     protected void onCreate(Bundle savedInstanceState) {2         // TODO Auto-generated method stub3         super.onCreate(savedInstanceState);4         //datas = getData();5         MyAdapter adapter=new MyAdapter(this);6         setListAdapter(adapter);7 8     }
1 /** 自定义适配器 */ 2     public  class MyAdapter extends BaseAdapter { 3         private LayoutInflater mInflater; 4  5         public MyAdapter(Context context) { 6             this.mInflater = LayoutInflater.from(context); 7  8         } 9 10         @Override11         public int getCount() {12             // TODO Auto-generated method stub13             return datas.size();14         }15 16         @Override17         public Object getItem(int position) {18             // TODO Auto-generated method stub19             return position;20         }21 22         @Override23         public long getItemId(int position) {24             // TODO Auto-generated method stub25             return position;26         }27 28         @Override29         public View getView(int position, View convertView, ViewGroup parent) {30             // TODO Auto-generated method stub31             // convertView.setTag(tag)32             ViewHolder holder = null;33             if (null == convertView) {34                 convertView = this.mInflater.inflate(R.layout.listview4, null);35                 36             ImageView img=        (ImageView)convertView.findViewById(R.id.img);37             TextView info=(TextView)convertView.findViewById(R.id.info);38             TextView head=(TextView)convertView.findViewById(R.id.head);39             Button btn=(Button)convertView.findViewById(R.id.btn);40             img.setBackgroundResource(R.drawable.icon);41             info.setText("info"+position);42             head.setText("head_"+position);43             btn.setText("btn_"+position);44             final int index=position;45             btn.setOnClickListener(new OnClickListener() {46             47                 @Override48                 public void onClick(View v) {49                     new AlertDialog.Builder(ListView4.this).setTitle("title").setMessage("info"+index)50                     .setPositiveButton("", new DialogInterface.OnClickListener() {51                         52                         @Override53                         public void onClick(DialogInterface dialog, int which) {54                             // TODO Auto-generated method stub55                             56                         }57                     }).show();58                     59                 }60             });61             62             return convertView;63         }

考虑到多次展示问题,android为我们提供了缓存机制,避免每一次都去findviewid一次

 

 

 

转载于:https://www.cnblogs.com/draem0507/archive/2012/10/30/2746456.html

你可能感兴趣的文章
[USACO07JAN]Balanced Lineup
查看>>
[入门OJ3876]怎样学习哲学
查看>>
陶哲軒實分析 習題3.6.9
查看>>
Python国内豆瓣源
查看>>
html页面的局部刷新
查看>>
C#不常见的语法
查看>>
[摘录]高效人士七习惯—以终为始原则
查看>>
[摘录]第4章 不道德的谈判策略
查看>>
IOS 视图传值
查看>>
【转】WEB网站常见受攻击方式及解决办法
查看>>
[转]五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
查看>>
re模块 正则表达式
查看>>
学习:深度和广度之谈
查看>>
leetcode495
查看>>
用分解的方式学算法002——插入排序
查看>>
剑指Offer 16 数值的整数次方
查看>>
Intent 调用系统中经常用到的组件
查看>>
乱搞-模拟退火
查看>>
AC日记——滑动窗口 洛谷 P1886
查看>>
Android监听手机网络变化
查看>>