先感谢该博作者下,本人看了获益匪浅啊!博文来源:http://blog.csdn.net/conowen/article/details/7294230
SimpleCursorAdapter方式请看http://blog.csdn.net/conowen/article/details/7306545
1、Listview简述
A view that shows items in a vertically scrolling list. The itemscome from theListAdapter
associatedwith this view.
简单来说就是,创建Listview,然后给数值就行了。
而这些数值来源有三种方式:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter
第一种是最简单的一种Adapter,是字符串数值,只能在ListView显示出文本信息。
第二种是一种自定义的数据来源,要自定义布局方式,可以放置图片,按钮,文本之类的。
第三种数据来源于数据库。
本文为第一种方式,ArrayAdapter,其他两项的方法都差不多,主要是adapter不同。
2、使用ListView步骤
首先创建Listview组件,然后调用Listview.ArrayAdapter()方法,设置Adapter。
通过调用setOnItemClickListener
()接口方法,设置“点击”listview某一项的监听事件。
通过调用setOnItemLongClickListener
()接口方法,设置“长按”listview某一项的监听事件。
需要说明的是,当设置匿名内部类newOnItemClickListener()时,eclipse不会自动载入复写函数,要点击左边的错误提示,然后Addunimplemented methods,才能载入复写函数onItemClick()。
[java]view plaincopy- mylistview.setOnItemClickListener(newOnItemClickListener(){
- @Override
- publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){
- //TODOAuto-generatedmethodstub
- }
- });
关于onItemClick方法,下面详细说说。(以下是官方的说明,参数命名不同而已,类型都是一样的。arg0=parent,arg1=view,arg2=position,arg3=id)
public abstractvoidonItemClick(AdapterView<?>parent,Viewview,int position, long id)
Since:APILevel 1Callback method to be invoked when an item in this AdapterView hasbeen clicked.
Implementers can call getItemAtPosition(position) if they need toaccess the data associated with the selected item.
//当点击listview某一项时,这个回调方法就会被调用。
Parameters
parent | The AdapterView where the click happened. |
---|---|
view | The view within the AdapterView that was clicked (this will bea view provided by the adapter) |
position | The position of the view in the adapter. |
id | The row id of the item that was clicked. |
主要说说最后三个参数,
view——————是你点击的Listview的某一项的内容,来源于adapter。如用((TextView)arg1).getText(),可以取出点击的这一项的内容,转为string类型。
position————是adapter的某一项,如点击了listview第2项,而第2项对应的是adapter的第2个数值,那此时position的值就为1了。
如对应adapter的第3个数值,那此时position的值就为2了。
id———————id的值为点击了Listview的哪一项对应的数值,点击了listview第2项,那id就等于1。
注:这些数值都是从0开始的。
[java]view plaincopy- packagecom.conowen.listview;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.widget.AdapterView;
- importandroid.widget.AdapterView.OnItemClickListener;
- importandroid.widget.AdapterView.OnItemLongClickListener;
- importandroid.widget.ArrayAdapter;
- importandroid.widget.ListView;
- importandroid.widget.TextView;
- importandroid.widget.Toast;
- publicclassListviewActivityextendsActivity{
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ListViewlv=(ListView)findViewById(R.id.lv);
- String[]data={"windows","linux","ios","android","wp7",
- "Symbian"};//定义adapter
- lv.setAdapter(newArrayAdapter<String>(this,//把adapter绑定到listview里面
- android.R.layout.simple_expandable_list_item_1,data));
- //点击事件
- lv.setOnItemClickListener(newOnItemClickListener(){
- @Override
- publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,
- longarg3){
- //TODOAuto-generatedmethodstub
- Toast.makeText(ListviewActivity.this,"你点击的是第"+arg3+"项",
- Toast.LENGTH_SHORT).show();
- //取出所点击的那一项的id
- }
- });
- //长按事件
- lv.setOnItemLongClickListener(newOnItemLongClickListener(){
- @Override
- publicbooleanonItemLongClick(AdapterView<?>arg0,Viewarg1,
- intarg2,longarg3){
- //TODOAuto-generatedmethodstub
- Toast.makeText(ListviewActivity.this,
- ((TextView)arg1).getText(),Toast.LENGTH_LONG).show();
- //取出点击listview某一项的内容
- returnfalse;
- }
- });
- }
- }