Android中ListView的使用
来源:互联网 发布:java课程设计案例精编 编辑:程序博客网 时间:2024/05/22 08:00
ListView是一个重要的控件,用于列表式的显示一些条目信息。
首先在Layout中定义以ListView。
<ListView android:id="@+id/lv_all_person" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > </ListView>
Activity中如何使用呢?
myListView=(ListView) findViewById(R.id.lv_all_person);//设置组件显示的内容myListView.setAdapter(new MyAdapter());
// BaseAdapter 是 google的工程师 给ListAdapter的默认实现class MyAdapter extends BaseAdapter{/** * 返回当前listview有多少个条目 */@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 5;}/** * 返回当前position位置对应的条目 的object对象 */@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}/** * 返回当前position位置 某个条目的id */@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position; }/** * 返回每一个条目显示的具体内容 * * 计算当前界面 会有多少个条目出现 1.得到每一个textview的高度 2.得到listview的高度 3. listview高度/ * textview高度 = 得到了一个屏幕显示的textview的个数 * * listview的每一个条目的显示 都需要调用一次getview的方法 屏幕上有多个item显示 就会调用多少getview的方法 * parent 代表的是 当前的这个listview */@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubTextView tv=new TextView(MainActivity.this);tv.setText("我是第"+position+"个文本");return tv;}}
以上是最基本的ListView显示方法。
如果想要用自己的格式显示,可以定义自己的layout来显示ListView。
比如在layout下新建一个xml为item.xml,让文本靠右显示。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" ><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffff66ff" android:id="@+id/tv_name" android:layout_alignParentRight="true" android:text="aaa" android:textSize="20sp" /> </RelativeLayout>如何在Activity中视同呢?首先要定义一个“打气筒”。
private LayoutInflater inflate; // 打气筒 吧xml转化为view接着在onCreate方法中把它初始化,就可以使用了。
// inflater是一个系统的服务inflate = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
Adapter中的重写方法getView
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = inflate.inflate(R.layout.item, null);//找到item.xmlTextView nameTv=(TextView) view.findViewById(R.id.tv_name);nameTv.setText(lsit.get(position).getName());return view;}
下面给每个条目增加点击事件,给ListView添加setOnItemClickListener监听事件。
myListView.setAdapter(new MyAdapter());myListView.setOnItemClickListener(new OnItemClickListener() {/** * parent 代表的是当前的listview * view 代表的当前被点击条目对应的view对象 position * 当前条目在listview中的位置 * id 行号 一般与position 相同的 */@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {/*方法一 TextView tv=(TextView) view.findViewById(R.id.tv_name);String name=tv.getText().toString();Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show(); *//* 方法2 String name = lsit.get(position).getName(); Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show(); */Person object = (Person) parent.getItemAtPosition(position);String name = object.getName();Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show();}});如果使用方法三,那么要修改getItem方法,返回对应位置的boject。
/** * 返回当前position位置对应的条目 的object对象 */@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn lsit.get(position);}
也可以使用一些系统的接口来显示。
1.SimpleAdapter
List<Map<String, String>> data=new ArrayList<Map<String,String>>();for (Person person : lsit) {HashMap<String, String> map=new HashMap<String, String>();map.put("name", person.getName());data.add(map);}myListView.setAdapter(new SimpleAdapter(MainActivity.this, data, R.layout.item, new String[]{"name"}, new int[]{R.id.tv_name}));
参数中的data为准备的集合数据,R.layout.item布局文件,后面两个 map中绑定的键,一个是对应布局文件中显示"键"的View。
2. ArrayAdapter
String[] persons=new String[lsit.size()];for(int i=0;i<lsit.size();i++){persons[i]=lsit.get(i).getName();}myListView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.item,R.id.tv_name,persons));
这种每条只能显示单个数据。
3.SimpleCursorAdapter
Cursor c = dao.findAllbyCursor();mListView.setAdapter(new SimpleCursorAdapter(this, R.layout.item, c,new String[] { "name", "age" }, new int[] { R.id.tv_name,R.id.tv_age }));可以方便的传入cursor。
注意:数据库返回cursor时不能关闭。
返回的cursor主键必须是_id.
0 0
- Android中ListView的使用
- android中ListView的使用
- android中ListView的使用
- android中ListView的使用
- Android中ListView的使用
- Android中ListView的使用
- Android中ListView的使用
- android 中 listView 的使用
- android 中listview的使用
- android中使用listview
- Android中ListView使用
- Android中ListView使用
- Android中ListView的使用(不用ListActivity)
- 在android的listview中使用observer
- ANDROID中LISTVIEW控件的使用
- android中ListView的简单使用
- Android中ListView之BaseAdapter的使用
- Android中ListView之ArrayAdapter的使用
- mongodb学习笔记
- jackson注解使用
- Jmock学习文档
- 拍照功能
- javascript(js)基础知识
- Android中ListView的使用
- 斯坦福学习
- C++ empty class default function
- 错误票据
- 2015目标
- Android developer镜像网站
- Pro Android学习笔记(一五九):联系人API(2):联系人应用
- 我的方向
- netlink socket编程实例