标签:
1、Listview简述
A view that shows items in a vertically scrolling list. The items come from theListAdapter
associated with this view.
简单来说就是,创建Listview,然后给数值就行了。
而这些数值来源有三种方式:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter
第一种是最简单的一种Adapter,是字符串数值,只能在ListView显示出文本信息。
第二种是一种自定义的数据来源,要自定义布局方式,可以放置图片,按钮,文本之类的。
第三种数据来源于数据库。
2、使用ListView步骤
将数据填充到布局之ArrayAdapter的使用
布局文件加入ListView控件:
<ListView android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="fill_parent" />
主程序:
MyListView.java package com.ycz.mylistview; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MyListView extends Activity{ private static final String[] str=new String[]{"first","second","third","fourth","fifth"}; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); lv=(ListView)findViewById(R.id.lv); //绑定ArrayAdapter适配器 lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str)); } }
第一个参数表示上下文,第二个参数表示一个包含TextView,用来填充listView的每一行的布局资源ID,第三个参数为ListView的内容。
通过指定第二个参数来实现不同的显示效果,资源android.R.layout.simple_list_item_1来实现仅显示内容,无勾选。资源android.R.layout_simpel_list_item_checked实现带选择框的ListView,需要用setChoiceMode()设定选择为多选还是单选。资源android.R.layout.simple_list_item_multiple_choice实现带checkbox的ListView,需要用setChoiceMode()设定选择为多选还是单选。资源android.R.layout.simple_list_item_
single_choice实现带RadioButton的ListView,需要用setChoiceMode()设定为多选还是单选。
示例一
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,str)); lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
//实现带选择框的ListView,并设置为多选
示例二
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,str)); lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
//实现带CheckBox的ListView,并设置为多选
示例三
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_ single_choice,str)); lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
通过调用setOnItemClickListener
()接口方法,设置“点击”listview某一项的监听事件。
通过调用setOnItemLongClickListener
()接口方法,设置“长按”listview某一项的监听事件。
mylistview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } });
关于onItemClick方法,下面详细说说。(以下是官方的说明,参数命名不同而已,类型都是一样的。arg0=parent,arg1=view,arg2=position,arg3=id)
Callback method to be invoked when an item in this AdapterView has been clicked.
Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item.
//当点击listview某一项时,这个回调方法就会被调用。
parent | The AdapterView where the click happened. |
---|---|
view | The view within the AdapterView that was clicked (this will be a 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————是item在adapter的位置,如点击了listview第2项,而第2项对应的是adapter的第2个数值,那此时position的值就为1了。
id———————id的值为点击了Listview的哪一项对应的数值,点击了listview第2项,那id就等于1。
注:这些数值都是从0开始的。
需要说明的是,当设置匿名内部类new OnItemClickListener()时,eclipse不会自动载入复写函数,要点击左边的错误提示,然后Add unimplemented methods,才能载入复写函数onItemClick()。
标签:
原文地址:http://www.cnblogs.com/xielvshi/p/4420197.html