Android从零开始(十一)

知识点:BaseAdapter

   一般的数据资料都是介绍用ArrayAdapter 、SimpleAdapter 、SimpleCursorAdapte,但是个人喜欢用BaseAdapter,原因很简单,BaseAdapter使用起来条理清楚,你想用列些什么数据就定义什么数据列出来,下面就看看它是怎么玩的吧···

    首先看一下效果:
  



步骤一:编写布局(代码如下)
        activity_main.xml:
      

Java代码 复制代码  收藏代码
  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.     tools:context=".MainActivity" >   
  6.   
  7.     <ListView   
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="fill_parent"  
  10.         android:id="@+id/list_view"    
  11.         />   
  12.   
  13. </RelativeLayout>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ListView
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:id="@+id/list_view" 
	    />

</RelativeLayout>


        

        list_item_layout.xml:
          

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="horizontal" >   
  6.        
  7.        
  8.     <ImageView    
  9.         android:layout_width="160dp"  
  10.         android:layout_height="100dp"  
  11.         android:scaleType="fitCenter"  
  12.         android:id="@+id/list_item_image"  
  13.         />   
  14.     <LinearLayout    
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="fill_parent"  
  17.         android:orientation="vertical"  
  18.         >   
  19.         <TextView   
  20.             android:layout_width="fill_parent"  
  21.             android:layout_height="wrap_content"  
  22.             android:gravity="center"  
  23.             android:textSize="30sp"  
  24.             android:id="@+id/list_item_txt1"  
  25.             />   
  26.         <TextView   
  27.             android:layout_width="fill_parent"  
  28.             android:layout_height="wrap_content"  
  29.             android:textSize="15sp"  
  30.             android:id="@+id/list_item_txt2"  
  31.             />   
  32.     </LinearLayout>   
  33.        
  34.   
  35. </LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    
    
    <ImageView 
        android:layout_width="160dp"
        android:layout_height="100dp"
        android:scaleType="fitCenter"
        android:id="@+id/list_item_image"
        />
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="30sp"
            android:id="@+id/list_item_txt1"
            />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            android:id="@+id/list_item_txt2"
            />
    </LinearLayout>
    

</LinearLayout>




步骤二、Activity准备数据(核心代码):

       

Java代码 复制代码  收藏代码
  1. package com.veryedu.baseadapter;   
  2.   
  3. import java.util.ArrayList;   
  4.   
  5. import com.example.baseadapter.R;   
  6.   
  7. import android.os.Bundle;   
  8. import android.app.Activity;   
  9. import android.util.Log;   
  10. import android.view.LayoutInflater;   
  11. import android.view.Menu;   
  12. import android.view.View;   
  13. import android.view.ViewGroup;   
  14. import android.widget.BaseAdapter;   
  15. import android.widget.ImageView;   
  16. import android.widget.ListView;   
  17. import android.widget.TextView;   
  18.   
  19. public class MainActivity extends Activity {   
  20.        
  21.     ArrayList data;   
  22.   
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {   
  25.         super.onCreate(savedInstanceState);   
  26.         setContentView(R.layout.activity_main);   
  27.            
  28.         ListView listView=(ListView)this.findViewById(R.id.list_view);   
  29.            
  30.         //准备数据源   
  31.         data=new ArrayList();   
  32.         data.add(new HuoYing(R.raw.hyrz2_001, "粗眉""不会忍术,但是体术超强,青春无极限"));   
  33.         data.add(new HuoYing(R.raw.hyrz2_002, "奈良鹿丸""分析能力超强"));   
  34.         data.add(new HuoYing(R.raw.hyrz2_003,  "李洛克""体术的继承人"));   
  35.         data.add(new HuoYing(R.raw.hyrz2_004, "春野樱""大扇子"));   
  36.         data.add(new HuoYing(R.raw.hyrz2_005, "天天""超多刃具玩家"));   
  37.         data.add(new HuoYing(R.raw.hyrz2_006, "山中井野""年轻猪肉跌蝶成员"));   
  38.         data.add(new HuoYing(R.raw.hyrz2_007, "日向宁次""白眼,相当于望远镜吧"));   
  39.            
  40.         listView.setAdapter(new BaseAdapter() {   
  41.                
  42.             //getView,是BaseAdapter的核心方法   
  43.             //这个方法将决定数据以何种布局填充到哪些控件中   
  44.             @Override  
  45.             public View getView(int position, View convertView, ViewGroup parent) {   
  46.                 // TODO Auto-generated method stub   
  47.                 //为当前的View指定布局文件   
  48.                 //如果是找控件,我们使用findViewById   
  49.                 //如果是找资源,我们使用getResources   
  50.                 //如果是找布局,我们使用LayoutInflater   
  51.                 Log.v("TAG""当前是第"+position+"项");   
  52.                 //getView会被反复调用:当数据项在屏幕中显示的时候就调用这个方法   
  53.                 //这每个数据项的布局是一样,仅仅只是数据不同,所以在这里进行一个判断   
  54.                 //避免重复加载布局   
  55.                 if(convertView==null){   
  56.                     convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_layout,null);   
  57.                 }   
  58.                 //获取数据源中的数据   
  59.                 HuoYing hy=(HuoYing)data.get(position);   
  60.                 //获取当前项的控件   
  61.                 ImageView image_view=(ImageView)convertView.findViewById(R.id.list_item_image);   
  62.                 TextView text_view1=(TextView)convertView.findViewById(R.id.list_item_txt1);   
  63.                 TextView text_view2=(TextView)convertView.findViewById(R.id.list_item_txt2);   
  64.                 //将数据填充到控件中   
  65.                 image_view.setImageResource(hy.image);   
  66.                 text_view1.setText(hy.name);   
  67.                 text_view2.setText(hy.mtext);   
  68.                    
  69.                 return convertView;   
  70.             }   
  71.                
  72.             @Override  
  73.             public long getItemId(int position) {   
  74.                 // TODO Auto-generated method stub   
  75.                 return position;   
  76.             }   
  77.                
  78.             @Override  
  79.             public Object getItem(int position) {   
  80.                 // TODO Auto-generated method stub   
  81.                 return data.get(position);   
  82.             }   
  83.                
  84.             @Override  
  85.             public int getCount() {   
  86.                 // TODO Auto-generated method stub   
  87.                 //一班都这么写,显示所有的数据   
  88.                 return data.size();   
  89.             }   
  90.         });   
  91.            
  92.     }   
  93.   
  94.     @Override  
  95.     public boolean onCreateOptionsMenu(Menu menu) {   
  96.         // Inflate the menu; this adds items to the action bar if it is present.   
  97.         getMenuInflater().inflate(R.menu.activity_main, menu);   
  98.         return true;   
  99.     }   
  100.   
  101. }  

你可能感兴趣的:(android,十一,从零开始)