欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

android基础入门ListView视图(8)

来源: 开发者 投稿于  被查看 19116 次 评论:84

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();
	}

运行效果:

\





用户评论