android基礎入門ListView視圖(8)

一.ListView視圖:

ListView 用來顯示一個列表控件。

public class MainActivity extends ListActivity {
  
	String[] str = {"中國","法國","英國","瑞士","奧地利","美國","印度","梵蒂岡"};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, str));
		
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		Toast.makeText(this,"你點擊瞭"+str[position],Toast.LENGTH_SHORT).show();
	}

}

這是實現的最基礎的ListView列表:

MainActivity擴展瞭ListView類,而ListView類擴展瞭Activity類並且通過綁定到一個數據源來顯示一個項列表。還要註意不用再佈局文件中添加ListView控件,因為在ListView類中已經包含著一個ListView,在onCreate()方法中,使用setListAdapter()方法來用一個ListView以編程方式填充活動的整個屏幕。ArrayAdapter對象管理將由ListView顯示的字符串數組。當點擊瞭ListView中的一個列表選項時,將觸發onListItemClick()方法,顯示一條吐司信息。

運行圖:

我們可以將要顯示的字符串存儲在strings.xml:



    ListViewTest
    Settings
    Hello world!

    
        中國
        法國
        英國
        瑞士
        奧地利
        美國
        印度
        梵蒂岡
        馬爾代夫
    

MainActivity.java:

public class MainActivity extends ListActivity {
  
	String[] str ;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		str = getResources().getStringArray(R.array.str);
		
		setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, str));
		
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		Toast.makeText(this,"你點擊瞭"+str[position],Toast.LENGTH_SHORT).show();
	}

}

通過getResources()方法以編程方式來檢索與應用程序捆綁的資源。

自定義ListView+自定義適配器(BaseAdapter):

ListView佈局:

  
    
    
  

MainActivity.java:

public class MainActivity extends ListActivity {
  
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		  
		      //設置一個Adapter,使用自定義的Adapter  
		 setListAdapter(new TextImageAdapter(this)); 

	}
	
    private class TextImageAdapter extends BaseAdapter{  
		         private Context mContext;  
		       public TextImageAdapter(Context context) {  
		            this.mContext=context;  
		        }  
		         /** 
		          * 元素的個數 
		          */  
		         public int getCount() {  
		             return left.length;  
		         }  
		   
		         public Object getItem(int position) {  
		             return null;  
		         }  
		   
		       public long getItemId(int position) {  
		            return 0;  
		        }  
		         //用以生成在ListView中展示的一個個元素View  
		         public View getView(int position, View convertView, ViewGroup parent) {  
		             //優化ListView  
		           if(convertView==null){  
		                 convertView=LayoutInflater.from(mContext).inflate(R.layout.activity_main, null);  
		                 ItemViewCache viewCache=new ItemViewCache();  
		                viewCache.mTextLeft=(TextView)convertView.findViewById(R.id.textLeft);  
		                 viewCache.mTextRight=(TextView)convertView.findViewById(R.id.textRight);  
		                convertView.setTag(viewCache);  
		            }  
		             ItemViewCache cache=(ItemViewCache)convertView.getTag();  
		             //設置文本和圖片,然後返回這個View,用於ListView的Item的展示  
		             cache.mTextLeft.setText(left[position]);  
		             cache.mTextRight.setText(Right[position]);  
		           return convertView;  
		       }  
		     }  
		      
		    private static class ItemViewCache{  
		         public TextView mTextLeft;  
		         public TextView mTextRight;  
		     }  
		     //屏幕左邊TextView 
		     private  String[] left=new String[]{"國傢","省","地區"};  
		     // 屏幕右邊TextView
		    private String[] Right = new String[]{"中國","山東","濱州"};


}

這裡我們自己定義瞭適配器,對於適配器後面我們會詳細講解。想添加列表的點擊事件:

@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "你點擊瞭"+left[position]+Right[position], Toast.LENGTH_SHORT).show();
	}

運行效果:



發佈留言