Android软件开发之ListView 详解
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。http://xys289187120.blog.51cto.com/3361352/657171
ListView的使用方法
ListView的使用方法
ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘制出漂亮的列表,说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可以把列表中的数据映射到ListView中。
在android的开发中最Adapter 一共可以分为
ArrayAdapter<T>,
BaseAdapter,
CursorAdapter,
HeaderViewListAdapter,
ResourceCursorAdapter,
SimpleAdapter,
SimpleCursorAdapter,
WrapperListAdapter
软件开发中最常用的有ArrayAdapter<T>, BaseAdapter, SimpleAdapter,今天我用一段代码向大家诠释如何使用ListView控件。
1.简单的ListView
在List列表中如果不存在过于复杂的东西 我们可以直接去new ArrayAdapter() 来绘制列表,无须继承ArrayAdapter,重写它的方法。但是如果列表中过于复杂的话就需要使用自定义布局来实现List列表。
在List列表中如果不存在过于复杂的东西 我们可以直接去new ArrayAdapter() 来绘制列表,无须继承ArrayAdapter,重写它的方法。但是如果列表中过于复杂的话就需要使用自定义布局来实现List列表。
- publicclassSimpleListextendsListActivity{
- privateString[]mListStr={"姓名:雨松MOMO","性别:男","年龄:25","居住地:北京","邮箱:[email protected]"};
- ListViewmListView=null;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- mListView=getListView();
- setListAdapter(newArrayAdapter<String>(this,
- android.R.layout.simple_list_item_1,mListStr));
- mListView.setOnItemClickListener(newOnItemClickListener(){
- @Override
- publicvoidonItemClick(AdapterView<?>adapterView,Viewview,intposition,
- longid){
- Toast.makeText(SimpleList.this,"您选择了"+mListStr[position],Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- }
2.带标题的ListView列表
使用 simpleAdapter 需要注意的是须要用Map<String,Object> item 来保存列表中每一项的显示的title与text , new SimpleAdapter的时候将map中的数据写入 ,程序就会帮我们绘制列表了。
- publicclassTitleListextendsListActivity{
- privateString[]mListTitle={"姓名","性别","年龄","居住地","邮箱"};
- privateString[]mListStr={"雨松MOMO","男","25","北京",
- "[email protected]"};
- ListViewmListView=null;
- ArrayList<Map<String,Object>>mData=newArrayList<Map<String,Object>>();;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- mListView=getListView();
- intlengh=mListTitle.length;
- for(inti=0;i<lengh;i++){
- Map<String,Object>item=newHashMap<String,Object>();
- item.put("title",mListTitle[i]);
- item.put("text",mListStr[i]);
- mData.add(item);
- }
- SimpleAdapteradapter=newSimpleAdapter(this,mData,android.R.layout.simple_list_item_2,
- newString[]{"title","text"},newint[]{android.R.id.text1,android.R.id.text2});
- setListAdapter(adapter);
- mListView.setOnItemClickListener(newOnItemClickListener(){
- @Override
- publicvoidonItemClick(AdapterView<?>adapterView,Viewview,intposition,
- longid){
- Toast.makeText(TitleList.this,"您选择了标题:"+mListTitle[position]+"内容:"+mListStr[position],Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- }
3.带图片的ListView列表
使用 simpleAdapter 来操作 但是构造simpleAdapter的时候须要使用我们自己写的布局来完成 ,因为系统的布局已经不能满足需求了,同样Map<String,Object> item 来保存列表中每一项须要的显示内容 如 图片 标题 内容等。
添加我们自己的列表布局 图片 标题 内容
- <?xmlversion="1.0"encoding="utf-8"?>
- <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"android:layout_height="?android:attr/listPreferredItemHeight">
- <ImageViewandroid:id="@+id/image"
- android:layout_width="wrap_content"android:layout_height="fill_parent"
- android:layout_alignParentTop="true"android:layout_alignParentBottom="true"
- android:adjustViewBounds="true"
- android:padding="2dip"/>
- <TextViewandroid:id="@+id/title"
- android:layout_width="wrap_content"android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/image"
- android:layout_alignParentRight="true"android:layout_alignParentTop="true"
- android:layout_above="@+id/text"
- android:layout_alignWithParentIfMissing="true"android:gravity="center_vertical"
- android:textSize="15dip"/>
- <TextViewandroid:id="@+id/text"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/image"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"android:singleLine="true"
- android:ellipsize="marquee"
- android:textSize="20dip"/>
- </RelativeLayout>
- publicclassIconListextendsListActivity{
- privateString[]mListTitle={"姓名","性别","年龄","居住地","邮箱"};
- privateString[]mListStr={"雨松MOMO","男","25","北京",
- "[email protected]"};
- ListViewmListView=null;
- ArrayList<Map<String,Object>>mData=newArrayList<Map<String,Object>>();;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- mListView=getListView();
- intlengh=mListTitle.length;
- for(inti=0;i<lengh;i++){
- Map<String,Object>item=newHashMap<String,Object>();
- item.put("image",R.drawable.jay);
- item.put("title",mListTitle[i]);
- item.put("text",mListStr[i]);
- mData.add(item);
- }
- SimpleAdapteradapter=newSimpleAdapter(this,mData,R.layout.iconlist,
- newString[]{"image","title","text"},newint[]{R.id.image,R.id.title,R.id.text});
- setListAdapter(adapter);
- mListView.setOnItemClickListener(newOnItemClickListener(){
- @Override
- publicvoidonItemClick(AdapterView<?>adapterView,Viewview,intposition,
- longid){
- Toast.makeText(IconList.this,"您选择了标题:"+mListTitle[position]+"内容:"+mListStr[position],Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- }
- <?xmlversion="1.0"encoding="utf-8"?>
- <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"android:layout_height="wrap_content">
- <ImageViewandroid:id="@+id/color_image"
- android:layout_width="wrap_content"android:layout_height="fill_parent"
- android:layout_alignParentTop="true"android:layout_alignParentBottom="true"
- android:adjustViewBounds="true"
- android:padding="2dip"/>
- <TextViewandroid:id="@+id/color_title"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/color_image"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"android:singleLine="true"
- android:ellipsize="marquee"
- android:textSize="15dip"/>
- <TextViewandroid:id="@+id/color_text"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/color_image"
- android:layout_below="@+id/color_title"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textSize="20dip"/>
- </RelativeLayout>
- publicclassColorListextendsListActivity{
- privateString[]mListTitle={"姓名","性别","年龄","居住地","邮箱"};
- privateString[]mListStr={"雨松MOMO","男","25","北京",
- "[email protected]"};
- ListViewmListView=null;
- MyListAdaptermyAdapter=null;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- mListView=getListView();
- myAdapter=newMyListAdapter(this);
- setListAdapter(myAdapter);
- mListView.setOnItemClickListener(newOnItemClickListener(){
- @Override
- publicvoidonItemClick(AdapterView<?>adapterView,Viewview,intposition,
- longid){
- Viewv=adapterView.getChildAt(position);
- v.setBackgroundColor(Color.RED);
- Toast.makeText(ColorList.this,"您选择了"+mListStr[position],Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- classMyListAdapterextendsBaseAdapter{
- privateint[]colors=newint[]{0xff626569,0xff4f5257};
- publicMyListAdapter(Contextcontext){
- mContext=context;
- }
- publicintgetCount(){
- returnmListStr.length;
- }
- @Override
- publicbooleanareAllItemsEnabled(){
- returnfalse;
- }
- publicObjectgetItem(intposition){
- returnposition;
- }
- publiclonggetItemId(intposition){
- returnposition;
- }
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- ImageViewiamge=null;
- TextViewtitle=null;
- TextViewtext=null;
- if(convertView==null){
- convertView=LayoutInflater.from(mContext).inflate(R.layout.colorlist,null);
- iamge=(ImageView)convertView.findViewById(R.id.color_image);
- title=(TextView)convertView.findViewById(R.id.color_title);
- text=(TextView)convertView.findViewById(R.id.color_text);
- }
- intcolorPos=position%colors.length;
- convertView.setBackgroundColor(colors[colorPos]);
- title.setText(mListTitle[position]);
- text.setText(mListStr[position]);
- iamge.setImageResource(R.drawable.jay);
- returnconvertView;
- }
- privateContextmContext;
- }
- }
- <?xmlversion="1.0"encoding="utf-8"?>
- <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"android:layout_height="wrap_content">
- <Button
- android:id="@+id/array_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="一个按钮"
- />
- <ImageViewandroid:id="@+id/array_image"
- android:layout_toRightOf="@+id/array_button"
- android:layout_width="wrap_content"android:layout_height="fill_parent"
- android:layout_alignParentTop="true"android:layout_alignParentBottom="true"
- android:adjustViewBounds="true"
- android:padding="2dip"/>
- <TextViewandroid:id="@+id/array_title"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/array_image"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"android:singleLine="true"
- android:ellipsize="marquee"
- android:textSize="15dip"/>
- <TextViewandroid:id="@+id/array_text"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/array_image"
- android:layout_below="@+id/array_title"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textSize="20dip"/>
- </RelativeLayout>
- publicclassArrayListextendsListActivity{
- privateString[]mListTitle={"姓名","性别","年龄","居住地","邮箱"};
- privateString[]mListStr={"雨松MOMO","男","25","北京",
- "[email protected]"};
- ListViewmListView=null;
- MyListAdaptermyAdapter=null;
- ArrayListarrayList=null;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- arrayList=this;
- mListView=getListView();
- myAdapter=newMyListAdapter(this,R.layout.arraylist);
- setListAdapter(myAdapter);
- super.onCreate(savedInstanceState);
- }
- publicclassMyListAdapterextendsArrayAdapter<Object>{
- intmTextViewResourceID=0;
- privateContextmContext;
- publicMyListAdapter(Contextcontext,inttextViewResourceId){
- super(context,textViewResourceId);
- mTextViewResourceID=textViewResourceId;
- mContext=context;
- }
- privateint[]colors=newint[]{0xff626569,0xff4f5257};
- publicintgetCount(){
- returnmListStr.length;
- }
- @Override
- publicbooleanareAllItemsEnabled(){
- returnfalse;
- }
- publicObjectgetItem(intposition){
- returnposition;
- }
- publiclonggetItemId(intposition){
- returnposition;
- }
- publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
- ImageViewiamge=null;
- TextViewtitle=null;
- TextViewtext=null;
- Buttonbutton=null;
- if(convertView==null){
- convertView=LayoutInflater.from(mContext).inflate(
- mTextViewResourceID,null);
- iamge=(ImageView)convertView.findViewById(R.id.array_image);
- title=(TextView)convertView.findViewById(R.id.array_title);
- text=(TextView)convertView.findViewById(R.id.array_text);
- button=(Button)convertView.findViewById(R.id.array_button);
- button.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewarg0){
- Toast.makeText(arrayList,"您点击的第"+position+"个按钮",Toast.LENGTH_LONG).show();
- }
- });
- }
- intcolorPos=position%colors.length;
- convertView.setBackgroundColor(colors[colorPos]);
- title.setText(mListTitle[position]);
- text.setText(mListStr[position]);
- if(colorPos==0)
- iamge.setImageResource(R.drawable.jay);
- else
- iamge.setImageResource(R.drawable.image);
- returnconvertView;
- }
- }
- }