listview简单使用
ListView可以说是android中,最常见得组件了,几乎所有的程序都会用到,由于手机屏幕有限,因此当我们需要展示大量数据的时候,就可借助ListView,ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到频幕内,同时屏幕上原有的数据会滚动出屏幕。
下面就简单介绍ListView的使用:
在xml文件中添加ListView组件:
<ListView
android:id="@+id/listview1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="#ffffaa"
android:dividerHeight="20dp"
android:drawSelectorOnTop="true"
android:entries="@array/names"
></ListView>
由于ListView要显示大量的数据,因此就应该提供数据, (这些数据可以是从网上下载的, 数据库读取的等)在MainActivity 中定义数组,并 设定数据适配器,
适配器:因为数组中的数据是无法直接在ListView因此需要借助一个数据适配器完成,最常用的是ArrayAdapter (这一次先使用ArrayAdapter,后面会陆续使用别的),
ArrayAdapter< String > adapter = new ArrayAdapter<String>(context, resource, textViewResourceId)
对于上面的数据适配器,由于我要显示的数据都是字符串,因此将其泛型指定为String,上面的ArrayAdapter有三个参数,第一个是上下文,第二个参数:ListView子项的布局id, (这里使用系统自带的 R.android.layout.simple_item_1)其中只有一个TextView用于显示文本,创建好了适配器,需要还需要调用ListView的setAdapter方法将建好的适配器对象传递过去,这样ListView和数据之间的关联就建立完成了。
主要代码如下:
public class MainActivity extends Activity {
private ListView listview = null;
//创建数据源
private String[] data = { "Apple", "Banana", "Orange", "Watermelon",
"Pear", "Grape", "Cherry", "StraWbrry" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_expandable_list_item_1, data);
listview = (ListView) findViewById(R.id.listview1);
listview.setAdapter(adapter);// 将数据适配器对象传递到ListView
}
}
运行结果如下:
这样ListView的简单使用就完成了。
ListView的单击事件使用
使用ItemClickListener ()方法来注册监听器,
public void onItemClick(AdapterView<?> parent, View view, int position,
long id)
在OnItemClickListener()中一共有三个参数,这里通过如下代码获得参数的信息:
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
System.out.println("--------->parent:" + parent.getClass());
System.out.println("--------->view:" + view.getClass());
System.out.println("--------->position:" + position);
System.out.println("--------->id:" + id);
}
测试:(这里当我点击Banana时):输出如下结果:
分析可以得出:
parent是显示信息的ListView,
view:承载列表中信息的组件(如Banana需要一个TextView来显示)
position:列表项的位置
id:表示列表项的序列号
下面获取每一个列表项的数据
TextView tv = (TextView) view;
Toast.makeText(MainActivity.this, tv.getText(), 2000).show();
运行结果如下:
---------------------------------------------------------------------------------------------------------------------
ListActivity的使用
如果只在屏幕上显示一个ListView可以使用ListActivity 否则需要自定义。
public classListActivity extends Activity
ListView提供了一个列表项视图来显示数据,可以绑定指定的数据源,比如数组或数据库的游标,给使用者提供一种选项选择
ListActivity的布局默认是一个单一的在屏幕中心的全屏幕的列表,
具体操作:
创建一个类继承自ListActivity ,然后创建数据源,以及数据适配器,与上面方式一致。
代码如下:
public class MyActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] names = { "AA", "BB", "CC", "DD" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, names);
ListView listview = getListView(); // 得到ListView的对象
listview.setAdapter(adapter);
}
然后就完成了ListView的配置,这时需要在AndroidMainifest.xml中将启动项改为当前的Activity
如下:
android:name="com.example.listview2.MyActivity"
在模拟器上运行如下:
对于其单击事件与上面类似。
ListView的更多用法,将持续更新。。。。