最后的效果图就是这样的,其实这个效果的话用SimpleAdapter也是可以实现的,但是为了学习自定义adapter还是重新写了一个。
首先我们应该有每一个列表项布局的xml文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" > 5 6 7 8 <TextView 9 android:id="@+id/tv_2" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:layout_toRightOf="@+id/tv_1" 13 android:layout_centerVertical="true" 14 android:layout_marginLeft="40dip" 15 android:textSize="20sp" 16 android:text="我是签名" /> 17 18 <TextView 19 android:id="@+id/tv_1" 20 android:layout_width="wrap_content" 21 android:layout_height="wrap_content" 22 android:layout_toRightOf="@+id/iv" 23 android:layout_centerVertical="true" 24 android:layout_marginLeft="20dip" 25 android:textSize="15sp" 26 android:textColor="#9d0f31" 27 android:text="我是名字" /> 28 29 <ImageView 30 android:id="@+id/iv" 31 android:layout_width="80dip" 32 android:layout_height="80dip" 33 android:src="@drawable/ic_launcher" /> 34 35 </RelativeLayout>
还要有一个只有listviwe的xml文件
1 <ListView 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:id="@+id/lv" 6 > 7 8 9 10 </ListView>
好了这时候我们就要新写一个adapter来继承我们的BaseAdapter
1 package com.example.listviewwx2; 2 3 import java.util.List; 4 5 import com.example.listviewwx2.bean.FriendBean; 6 7 import android.content.Context; 8 import android.view.View; 9 import android.view.ViewGroup; 10 import android.widget.BaseAdapter; 11 import android.widget.ImageView; 12 import android.widget.SimpleAdapter; 13 import android.widget.TextView; 14 15 public class FriendAdapter extends BaseAdapter { 16 17 private List<FriendBean> data;// 传进来数据这是必须的 18 private Context context;// 这个是上下文,为了让里面的控件有获得资源的能力 19 20 public FriendAdapter(List<FriendBean> data, Context context) { 21 this.data = data; 22 this.context = context; 23 24 } 25 26 @Override 27 // 返回的视图数量 28 public int getCount() { 29 return data.size();//这里我们根据传进来list来返回 30 } 31 32 @Override 33 // 根据position获取item的数据 34 public Object getItem(int position) { 35 return data.get(position); 36 } 37 38 @Override 39 // 根据position返回item的ID 40 public long getItemId(int position) { 41 return position; 42 } 43 44 @Override 45 // 返回视图,这个方法很主要 46 public View getView(int position, View arg1, ViewGroup arg2) { 47 View view = View.inflate(context, R.layout.lisviewt_item1, null); 48 FriendBean fb = data.get(position); //获得封装对象的数据,根据position 49 ImageView img = (ImageView) view.findViewById(R.id.iv); //得到布局下的控件 50 TextView name = (TextView) view.findViewById(R.id.tv_1);//得到布局下的控件 51 TextView gexing = (TextView) view.findViewById(R.id.tv_2); 52 img.setImageResource(fb.getImgID()); //给这个控件加入图片,资源就是从封装数据的对象中得到的 53 name.setText(fb.getName()); 54 gexing.setText(fb.getGexing()); 55 return view; 56 } 57 58 }
好了这个方法写完了,然后我们就要着手把adapter和Llistview绑定,但是我们首先要解决一个问题,我们怎么能够把图片和两个字符串传给list,这时候我们就需要一个对象来封装这三个数据了,然后把这个对象添加到集合里面去。
1 package com.example.listviewwx2; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.example.listviewwx2.bean.FriendBean; 7 8 import android.os.Bundle; 9 import android.app.Activity; 10 import android.view.Menu; 11 import android.widget.ListView; 12 13 public class MainActivity extends Activity { 14 15 private ListView lv ; 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 lv = (ListView) findViewById(R.id.lv); 21 22 FriendAdapter fa = new FriendAdapter(getData(), this); 23 //声明adapter并实例化, 24 lv.setAdapter(fa); 25 } 26 private List<FriendBean> getData() { 27 FriendBean fb = new FriendBean(); 28 //声明javabean并且实例化 29 List<FriendBean> list = new ArrayList<FriendBean>(); 30 //声明集合 31 for (int i = 0; i < 10; i++) { 32 fb.setImgID(R.drawable.ic_launcher); 33 fb.setGexing("我是小安卓我要成为出色的操作系统"); 34 fb.setName("Android"); 35 list.add(fb); 36 } 37 return list; 38 } 39 40 41 42 }
1 package com.example.listviewwx2.bean; 2 3 public class FriendBean { 4 private int imgID; 5 private String name; 6 private String gexing; 7 public int getImgID() { 8 return imgID; 9 } 10 public void setImgID(int imgID) { 11 this.imgID = imgID; 12 } 13 public String getName() { 14 return name; 15 } 16 public void setName(String name) { 17 this.name = name; 18 } 19 public String getGexing() { 20 return gexing; 21 } 22 public void setGexing(String gexing) { 23 this.gexing = gexing; 24 } 25 26 }
时间: 2024-08-08 13:52:18