列表(listview)是Android界面开发的常用到的组件,通过列表的形式展现内容,其中子元素能够自适应长度显示。使用listview我个人觉得只要搞懂两点就可以了:
1.写出供显示的listview的一个子元素的xml。
2.适配器
系统提供给我们的适配器有ArrayAdapter(只能显示一行字)、SimpleAdapter(能够显示字和图片,个人觉得这个已经够用了)
光说不练是没有用的,下面开始实战:
(1)搞一个只有文字的listview的示例,按照我们上面的步骤开始思考,因为只有一个文字,所以就不要自己另外写一个xml了,android.R.layout.simple_list_item_1给我们提供了一个这样样式的子元素,因为我们只需要显示一行字,所以我选用了ArrayAdapter适配器,下面开始写适配器的代码,如下
public class Listviewadapter extends Activity {
private String[] data={"apple","banana","orange","pear"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.listview);
ListView list=(ListView)findViewById(R.id.listview);
ArrayAdapter<String> Listadapter2=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
list.setAdapter(Listadapter2);
}
}
运行效果:
(2)下面我们搞一个图片和文字的listview,还是按照我们的步骤来,第一写出listview子元素的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:paddingBottom="4dip"
android:paddingLeft="12dip"
android:paddingRight="12dip"
>
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:paddingTop="12dip"
/>
<TextView
android:id="@+id/itemname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="textview1"
android:textSize="20dip"
/>
<TextView
android:id="@+id/itemname2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/itemname"
android:text="textview2"
/>
</RelativeLayout>
第二写出这次listview的适配器代码,因为这个既需要图片有需要文字,所以我选用了SimpleAdapter适配器,代码如下:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.listview);
ListView list=(ListView)findViewById(R.id.listview);
ArrayList<HashMap<String, Object>> listitem =new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++)
{
HashMap<String, Object> item=new HashMap<String, Object>();
item.put("Image",R.drawable.ic_launcher);
item.put("name", "小明");
item.put("电话号码", "123456");
listitem.add(item);
}
SimpleAdapter listadapter=new SimpleAdapter(this, listitem, R.layout.list_adapter, new String[] {"Image","name","电话号码"}, new int[]{R.id.imageview,R.id.itemname,R.id.itemname2});
list.setAdapter(Listadapter2);
}
}
运行结果