1.ListView
ListView是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所有列表项。
创建ListView有两种方式:
直接使用ListView进行创建
让Activity继承ListActivity
1)直接使用ListView进行创建
在list_layout.xml中代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="名单"
/>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/nameList"
/>
</LinearLayout>
在ListViewDemo.java中代码如下:
package cn.class3g.activity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListViewDemo extends Activity implements OnItemClickListener{
ListView nameList = null;
String[] names = {"张三","李四","王五","宋留","猪八"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_layout);
findView();
}
private void findView() {
nameList = (ListView) this.findViewById(R.id.nameList);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,names);
nameList.setAdapter(adapter);
nameList.setOnItemClickListener(this);
}
//覆盖监听器接口OnItemClickListener的抽象方法
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Log.i("TAG", names[arg2] + "position = " + String.valueOf(arg2) + "row_id = " + String.valueOf(arg3));
}
}
2)让Activity继承ListActivity
在ListActivityDemo.java中代码如下:
package cn.class3g.activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListActivityDemo extends ListActivity {
String[] names = {"张三","李四","王五","宋留","猪八"};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,names);
this.setListAdapter(adapter);
}
//覆盖父类方法,无需专门创建和注册监听器
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.i("TAG", names[position] + "position = " + String.valueOf(position) + "row_id = " + String.valueOf(id));
}
}
两种方法显示效果相同:
2.Spinner
Spinner其实就是一个列表选择框
在arrays.xml中指定数组资源
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="sports">
<item>足球</item>
<item>篮球</item>
<item>乒乓球</item>
<item>网球</item>
</string-array>
</resources>
在spinner_layout.xml中代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请选择一个运动项目"
/>
<Spinner
android:id="@+id/sportsSp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/spinner_prompt"
android:entries="@array/sports"
/>
</LinearLayout>
在SpinnerDemo.java中代码如下:
package cn.class3g.activity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Spinner;
import android.widget.TextView;
public class SpinnerDemo extends Activity implements OnItemSelectedListener{
Spinner sportSp = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner_layout);
findViews();
}
private void findViews() {
sportSp = (Spinner) this.findViewById(R.id.sportsSp);
sportSp.setOnItemSelectedListener(this);
sportSp.performClick();
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
TextView tv = (TextView) arg1;
Log.i("TAG", tv.getText().toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}
显示效果如下: