使用Android的列表控件有几点要注意:

一、要设计一个类来代表控件中的一行所要展示的数据,例如User类;
二、要设计一个layout来展示控件中的一行,例如user_item.xml;
三、要继承BaseAdapter类来包含列表控件中所有的数据列表,以及其展现方法;
四、要在列表控件所在的Activity中加入设置代码。
五、刷新列表控件时请使用BaseAdapter的notifyDataSetChanged方法和ListView类的invalidate方法。

具体使用分为以下五步:
1.在需要使用listview控件的layout中加入该控件;
2.listview控件的每一行对应一组数据,可以将这一组数据组成一个类,例如User类:


public class User {private String id;private String name;private String phone;private String passwd;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getPasswd() {return passwd;}public void setPasswd(String passwd) {this.passwd = passwd;}}
3.为listview控件的每一行设计一个layout,这个layout就是为了展示User类的实例,例如:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >    <TextView        android:id="@+id/id"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="id" />    <TextView        android:id="@+id/name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="name" />    <TextView        android:id="@+id/phone"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="phone" />    <TextView        android:id="@+id/passwd"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="passwd" /></LinearLayout>
4.为该listview设计一个Adapter类,这个类包含了listview所要展示的对象列表,并在其getView(int, View, ViewGroup)方法中详细描述了如何展示每一行数据,例如:

package com.dumaisoft.kidscore.adapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.dumaisoft.kidscore.R;import com.dumaisoft.kidscore.api.User;import com.dumaisoft.kidscore.db.dao.UserDao;/** * @author wxb * 用户的列表Adapter */public class UserAdapter extends BaseAdapter {private Context context;private List<User> userlist;public UserAdapter(Context c){context = c;userlist = new ArrayList<User>();refreshData();}@Overridepublic void notifyDataSetChanged() {// TODO Auto-generated method stubsuper.notifyDataSetChanged();refreshData();}/** * 刷新用户列表,从数据库中重新读取 */public void refreshData(){userlist.clear();//列出每一个User,加入队列UserDao userdao = new UserDao(context);List<Map<String, String>> listmap = userdao.listUserMaps(null,null);for(int i =0;i<listmap.size();i++){Map<String,String > map = new HashMap<String, String>();map = listmap.get(i);User user = new User();user.setId(map.get("user_id"));user.setName(map.get("user_name"));user.setPhone(map.get("user_phone"));user.setPasswd(map.get("user_password"));userlist.add(user);}}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn userlist.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn userlist.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.user_item, null);}User user = userlist.get(position);TextView id = (TextView) convertView.findViewById(R.id.id);id.setText(user.getId());TextView name = (TextView) convertView.findViewById(R.id.name);name.setText(user.getName());TextView phone = (TextView) convertView.findViewById(R.id.phone);phone.setText(user.getPhone());TextView passwd = (TextView) convertView.findViewById(R.id.passwd);passwd.setText(user.getPasswd());return convertView;}}

5.在Activity类中添加listview的设置代码:

package com.dumaisoft.kidscore.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.BaseAdapter;import android.widget.ListView;import com.dumaisoft.kidscore.R;import com.dumaisoft.kidscore.adapter.UserAdapter;public class UserActivity extends Activity {private UserActivity _c = this;private ListView listview;private UserAdapter useradapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);        setContentView(R.layout.user_activity);                this.findViewById(R.id.btn_user_add).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(_c,UserAddActivity.class));}});                this.findViewById(R.id.btn_user_refresh).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {((UserAdapter) listview.getAdapter()).notifyDataSetChanged();listview.invalidate();}});                useradapter = new UserAdapter(_c);        listview = (ListView) this.findViewById(R.id.listUser);        listview.setAdapter(useradapter);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}}





更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android(安卓)重要数据目录
  5. android中如何美化ListView的背景
  6. Android中存取简单的数据
  7. Android基础笔记(九)- 广播
  8. Android(安卓)RIL Java
  9. [置顶] android浮动搜索框的使用

随机推荐

  1. JAVA 关于图片上传的代码
  2. JavaEE学习笔记之SSH—Struts2(4)
  3. 关于Java中接口继承接口
  4. Java中怎么把字符串数组转为整形数组
  5. Java并发: CountDownLatch、CyclicBarrier
  6. 有什么方法可以避免HibernateOptimisticL
  7. Java jasypt对.properties配置文件密码加
  8. 在二叉树中找出和为某一值的所有路径-jav
  9. java 在数据库中添加新信息
  10. javaweb常用监听器