自定义Adapter的使用

来源:互联网 发布:刷svip超级会员软件 编辑:程序博客网 时间:2024/05/19 00:11

定义一个自己的adapter,来按自己的方式显示列表中的内容。

 首先创建一个自己的adapter,需要继承BaseAdapter。里面有几个重要的方法需要我们重写

  1public int getCount()   这个用于返回我们需要填充的对象的数目


  2
public Object getItem(int position)  这个用于返回指定的对象,传入position表示该对象在第几个位置

  3
public long getItemId(int position)  用于返回指定的对象的id

  4
public View getView(int position, View convertView, ViewGroup parent)   这个方法决定了我们adapterUI上显示的样式,所以这个方法很重要,返回的就是我们显示信息的View


首先是main.xml,来显示布局:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <ListView  
  8.     android:id="@id/android:list"    
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="fill_parent"   
  11.     />  
  12. </LinearLayout>  

然后使我们自己需要在adapter中使用的布局文件,这个得使用比较灵活,可以在创建的adapter的时候给它传入一个layoutid,或者直接指定一个布局,这里我直接使用这个布局:


[html] view plaincopy
  1. adapter_layout.xml  
  2. <?xml version="1.0" encoding="utf-8"?>  
  3. <LinearLayout  
  4.     xmlns:android="http://schemas.android.com/apk/res/android"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="wrap_content"  
  7.     android:orientation="horizontal"  
  8.     >  
  9.     <ImageView  
  10.         android:id="@+id/imageview"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         />  
  14.     <TextView  
  15.         android:id="@+id/textview"  
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"  
  18.         />  
  19. </LinearLayout>  

下面贴出java代码:

[java] view plaincopy
  1. public class MyAdapter extends BaseAdapter{  
  2.   
  3.     private Context context;  
  4.     String[] data = new String[]{  
  5.             "China","USA","Japan","England"  
  6.     };  
  7.       
  8.     public MyAdapter(Context context){  
  9.         this.context = context;  
  10.     }  
  11.       
  12.     @Override  
  13.     public int getCount() {  
  14.         return data.length;  
  15.     }  
  16.   
  17.     @Override  
  18.     public Object getItem(int position) {  
  19.         return data[position];  
  20.     }  
  21.   
  22.     @Override  
  23.     public long getItemId(int position) {  
  24.         return (long)position;  
  25.     }  
  26.   
  27.     @Override  
  28.     public View getView(int position, View convertView, ViewGroup parent) {  
  29.          
  30. //获取布局对象 
  31.         LayoutInflater inflater = LayoutInflater.from(context);  
  32.         LinearLayout ll = (LinearLayout)inflater.inflate(R.layout.adapter_layout, null);  
  33.         
  34. //获取布局中的组件
  35. ImageView iv = (ImageView)ll.findViewById(R.id.imageview);  
  36.         TextView tv = (TextView)ll.findViewById(R.id.textview);  
  37.         
  38. //给组件设置值
  39. if(position%2 == 0){  
  40.             Drawable drawble = context.getResources().getDrawable(R.drawable.icon);  
  41.             iv.setBackgroundDrawable(drawble);  
  42.         }  
  43.         tv.setText(data[position]); 

  44. //返回这个布局 
  45.         return ll;  
  46.     }  
  47.   
  48. }  

下面创建一个Activity 使用这个adapter


[html] view plaincopy
  1. public class MyAdapterDemo extends ListActivity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.         MyAdapter adapter = new Adapter01(this);  
  8.         setListAdapter(adapter);  
  9.     }  

0 0
原创粉丝点击