1.简介
ListView用于以列表的形式展示数据。它在装载数据时,不能使用ListView类的add()等相关方法添加,而要借助Adapter对象进行添加。另外,由于
系统提供的Adapter往往不符合我们的要求,需要我们自定义Adapter。
2.构建
Activity1:
XML文件如下:
act1:
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/RelativeLayout1" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <ListView 9 android:id="@+id/listView1" 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:layout_alignParentStart="true" 13 android:layout_alignParentTop="true" > 14 </ListView> 15 </RelativeLayout>
act2:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context="example.adapter.Activity1" > 10 11 <ImageView 12 android:id="@+id/imageView1" 13 android:layout_width="60dp" 14 android:layout_height="60dp" 15 android:layout_alignParentStart="true" 16 android:layout_alignParentTop="true" 17 android:contentDescription="@string/function" 18 android:src="@drawable/i1" /> 19 20 <TextView 21 android:id="@+id/textView1" 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_alignBottom="@+id/imageView1" 25 android:layout_marginBottom="17dp" 26 android:layout_marginStart="30dp" 27 android:layout_toEndOf="@+id/imageView1" 28 android:textSize="30sp" 29 android:text="@string/tv" /> 30 </RelativeLayout>
3.自定义Adapter
1 public class MyAdapter extends BaseAdapter{ 2 private Context context; 3 private String data[]; 4 5 public MyAdapter(Context context,String data[]) { 6 this.context=context; 7 this.data=data; 8 } 9 @Override 10 //获取数据长度 11 public int getCount() { 12 return data.length; 13 } 14 @Override 15 //获取数据Item 16 public Object getItem(int position) { 17 return data[position]; 18 } 19 @Override 20 //获得数据ID 21 public long getItemId(int position) { 22 return position; 23 } 24 @Override 25 //需要加载的视图 26 public View getView(int position, View convertView, ViewGroup parent) { 27 if(convertView==null){ 28 convertView=LayoutInflater.from(context).inflate(R.layout.act2, null); 29 } 30 TextView tv=(TextView) convertView.findViewById(R.id.textView1); 31 tv.setText(data[position]); 32 return convertView; 33 } 34 }
4.Activtiy1代码
1 public class Activity1 extends Activity { 2 private ListView lv; 3 //适配器 4 private MyAdapter adapter; 5 //数据 6 String data[]={"火磷","王悦","张晓波","单佳","王赵文","徐磊","高达"}; 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.act1); 11 lv=(ListView) findViewById(R.id.listView1); 12 //加载adapter 13 adapter=new MyAdapter(this, data); 14 //绑定 15 lv.setAdapter(adapter); 16 }
5.效果