Android UI系统控件进阶(一)之列表控件ListView详解
来源:互联网 发布:keep软件使用步骤 编辑:程序博客网 时间:2024/05/21 17:00
ListVeiw 源代码下载:点击打开链接
列表控件ListView
列表控件ListViewListView是一种用于垂直显示的列表控件,其类的继承结构如下:
ListView是比较常用的组件,它以列表的形式展示具体内容,如果ListView控件显示内容过多,则会出现垂直滚动条,并且它能够根据数据的长度自适应显示。列表的显示需要三个元素:
1.ListVeiw 用来展示列表的View。
2.适配器用来把数据映射到ListView上的中介。
3.数据,指被映射的字符串、图片或者基本组件。根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。
ListView支持点击事件处理,用户可以用少量的代码实现复杂的选择功能。在布局文件中,用XML描述的ListView控件,代码如下:
ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:
1.准备ListView要显示的数据 ;
2.使用 一维或多维 动态数组 保存数据;
3.构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成多少个Item;
4.把 适配器 添加到ListView,并显示出来。
适配器:
说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可以把列表中的数据映射到ListView中,Android中Adapter可以这么理解的,是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面。在android的开发中最Adapter 一共可以分为:
1.ArrayAdapter,2.BaseAdapter,
3.CursorAdapter,
4.HeaderViewListAdapter,
5.ResourceCursorAdapter,
6.SimpleAdapter,
7.SimpleCursorAdapter,
8.WrapperListAdapter
ListView开发中:ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
ArrayAdapter:它只能用于显示文字。
SimpleAdapter:它的功能非常强大。可以通过它自定义ListView中的item的内容,比如图片、多选框等。
SimpleCursorAdapter:在许多时候需要将数据库表中的数据显示在ListView、Gallery等组件中。虽然可以直接使用Adapter对象处理,但工作量很大。为此,Android SDK提供了一个专用于数据绑定的Adapter类:SimpleCursorAdapter。
以下是一个简单的例子:
ArrayAdapter:
public class MyListView extends Activity {
private ListView listView;
//private List<String> data = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
listView = new ListView(this);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
setContentView(listView);
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("漩涡鸣人");
data.add("宇智波止水");
data.add("黑崎一护");
data.add("波风水门");
data.add("奈良鹿丸");
data.add("山中井野");
return data;
}
}
SimpleAdapter:
例1
public class MyListView3 extends ListActivity {
// private List<String> data = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlist,
new String[]{"title","info","img"},
new int[]{R.id.title,R.id.info,R.id.img});
setListAdapter(adapter);
}
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "火影");
map.put("info", "漩涡鸣人");
map.put("img", R.drawable.i1);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "死神");
map.put("info", "黑崎一护");
map.put("img", R.drawable.i2);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "海贼王");
map.put("info", "索隆");
map.put("img", R.drawable.i3);
list.add(map);
return list;
}
}
例2:
public class MyListView4 extends ListActivity {
private List<Map<String, Object>> mData;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mData = getData();
MyAdapter adapter = new MyAdapter(this);
setListAdapter(adapter);
}
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "火影");
map.put("info", "漩涡鸣人");
map.put("img", R.drawable.i1);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "死神");
map.put("info", "黑崎一护");
map.put("img", R.drawable.i2);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "海贼王");
map.put("info", "索隆");
map.put("img", R.drawable.i3);
list.add(map);
return list;
}
// ListView 贺 羽昌
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.v("MyListView4-click", (String)mData.get(position).get("title"));
}
/**
* listview
*/
public void showInfo(){
new AlertDialog.Builder(this)
.setTitle("贺 羽昌listview")
.setMessage("羽哥...")
.setPositiveButton("羽哥", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
public final class ViewHolder{
public ImageView img;
public TextView title;
public TextView info;
public Button viewBtn;
}
public class MyAdapter extends BaseAdapter{
private LayoutInflater mInflater;
public MyAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.vlist2, null);
holder.img = (ImageView)convertView.findViewById(R.id.img);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.info = (TextView)convertView.findViewById(R.id.info);
holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
convertView.setTag(holder);
}else {
holder = (ViewHolder)convertView.getTag();
}
holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
holder.title.setText((String)mData.get(position).get("title"));
holder.info.setText((String)mData.get(position).get("info"));
holder.viewBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showInfo();
}
});
return convertView;
}
}
- Android UI系统控件进阶(一)之列表控件ListView详解
- 【Android 开发】:UI控件之 ListView 列表控件的使用
- Android UI系统控件进阶(三)—自动完成文本控件AutoCompleteTextView详解及属性
- Android UI系统控件进阶(二)—下拉列表控件Spinner,进度条ProgressBar,滑块控件SeekBar,评分控件RatingBar
- Android之UI学习篇十一:ListView控件学习(一)
- 【Android 开发】:UI控件之 ListView 列表控件的使用(二)
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- android UI进阶之自定义组合控件
- 初学makefile
- MySQL客户端2006(CR_SERVER_GONE_ERROR)错误测试和优化方法
- 雷神3开方算法解析,游戏运行速度提高四倍。
- android Notification(通知) 的使用
- drools的JavaDialect异常
- Android UI系统控件进阶(一)之列表控件ListView详解
- 多线程编程——线程的同步(六)
- Linux策略路由
- POJ3616——Milking Time
- Bitmap 与 Drawable 之间的转换
- iOS 开发-碎文 11.28
- Android打包过程和体系结构,工程程序结构
- 安装discuz及所需环境
- 启动hive metastore命令