博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android数据展示之ListView
阅读量:6116 次
发布时间:2019-06-21

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

Android应用程序中经常需要使用ListView展示数据,一个ListView通常将数据填充到布局文件中,在填充的过程中需要知道连接数据与ListView的适配器。适配器是一个连接数据和AdapterView(ListView是一个典型的AdapterView)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。常用的适配器有三种ArrayAdapter,SimpleAdapter和BaseAdapter。

ArrayAdapter实现ListView

用ArrayAdapter可以实现简单的ListView的数据绑定。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView控件上。ArrayAdapter的使用非常简单。

在布局文件中新增一个ListView

 activity中代码的实现,获取ListView没什么好说的,主要是setAdapter方法,第二个参数就是Android系统中内置布局文件,如果是android.R.layout.simple_list_item_1,就直接是一行文字,我只列举了三个,其他的可以自行测试:

String[] listArrStrings=new String[]{"星期一","星期二","星期三"};		listView=(ListView) findViewById(R.id.list_Test);				listView.setAdapter(new ArrayAdapter
(this,android.R.layout.simple_list_item_single_choice, listArrStrings)); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { // TODO Auto-generated method stub String nameString=(String) parent.getItemAtPosition(position); setTitle("今天是:"+nameString); }

 实现结果如下:

  

重新改变一下代码,改变一下填充的默认的系统的布局文件,可以设置单选还是多选:

listView.setAdapter(new ArrayAdapter
(this,android.R.layout.simple_list_item_checked, listArrStrings)); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); listView.setAdapter(new ArrayAdapter
(this,android.R.layout.simple_list_item_checked, listArrStrings)); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

 效果如下:

   

SimpleAdapter实现ListView

这次先来看下要实现的效果:

 

ListView中每个View布局都一样,这个时候需要首先新建一个布局文件simpleitem.xml

  这个时候代码调用也很简单,跟ArrayAdapter类似,SimpleAdapter,最后两个参数,一个是map中的键,一个对应的simpleitem中的id:

ListView listView=(ListView) findViewById(R.id.list_simple);		ArrayList
> arrayList=new ArrayList
>(); for (int i = 0; i <10; i++) { HashMap
map=new HashMap
(); map.put("itemTitle", "标题"+i); map.put("itemText", "内容"+i); arrayList.add(map); } SimpleAdapter simpleAdapter=new SimpleAdapter(this, arrayList, R.layout.simpleitem, new String[]{"itemTitle","itemText"},new int[]{R.id.itemTitle,R.id.itemText}); listView.setAdapter(simpleAdapter);

 BaseAdapter实现ListView

BaseAdapter可扩展性,可以再View中加入自己定义的一些操作事件,使用的时候需要实现BaseAdapter类,定义一个自己的类;

class MyBaseAdapter extends BaseAdapter {		// 定义List的长度		@Override		public int getCount() {			// TODO Auto-generated method stub			return 100;		}		@Override		public Object getItem(int position) {			// TODO Auto-generated method stub			return null;		}		@Override		public long getItemId(int position) {			// TODO Auto-generated method stub			return 30;		}		@Override		public View getView(int position, View convertView, ViewGroup parent) {			// TODO Auto-generated method stub			 TextView textView = new TextView(BaseActivity.this);			 textView.setText("测试");			 textView.setTextColor(Color.BLUE);			 textView.setTextSize(20);			 return textView;				}	}

 Activity中调用代码:

ListView listView = (ListView) findViewById(R.id.list_base);		listView.setAdapter(new MyBaseAdapter());

  

上面其实用BaseAdapter实现了ArrayAdapter的功能,同样的可以使用BaseAdapter实现SimpleAdapter的功能:

还是同样的调用simplte这个布局,重写一下getView()方法:

View view = null;			if (convertView == null) {				LayoutInflater inflater = BaseActivity.this.getLayoutInflater();				view = inflater.inflate(R.layout.simpleitem, null);			}else{				view=convertView;			}			TextView tvTitleTextView=(TextView) view.findViewById(R.id.itemTitle);			TextView tvTextView=(TextView) view.findViewById(R.id.itemText);			tvTitleTextView.setTextSize(20);			tvTitleTextView.setText("标题---"+position);			tvTitleTextView.setTextColor(Color.RED);			tvTextView.setTextSize(15);			tvTextView.setText("内容----"+position);			return view;

  效果如下:

 

 

十一点了,该睡觉了,程序员还是不要熬夜的比较好~

转载地址:http://iqpka.baihongyu.com/

你可能感兴趣的文章
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
关于软件开发的一些感悟
查看>>
uva 10806
查看>>
纯CSS3绘制的黑色图标按钮组合
查看>>
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>