在手机中经常有列表方式。如果Activity中只有唯一一个List(这也是通常的情况),可以继承ListActivity来实现。我们用两个例子来学习List。

List例子一:利用Android自带的List格式

步骤一:Android XML文件

ListActivity是一个全屏的list,如果我们需要定制layout,例如加上一个button之类的什么的,我们需将ListView 的id设置为“@android:id/list”,我们可以同getListView来获取ListView的对象,下面是XML的例子:

....
<LinearLayout ...><!-- 在这里我曾忘了设定android:orientation="vertical" ,结果无法显示第二个widget,查了我很久-->
...<Button … /><--在这个例子中,我们在加入了一个Button,因此采用定制Layout的方式,即设置@android:id/list-->
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false" />
</LinearLayout>

步骤二:源代码

1)使用String数组设置List的item内容

例如:String[] items={"One", "Two", "Three", "Four", "Five"};

2)在onCreate中将item的内容加入,使用setListAdapter并设置List的格式

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items));

ArrayAdapter有三个参数,第一是对象,第二是List的格式,第三个是List的内容。对于格式这个例子采用了Android自定义的 几种格式,后面会具体列出。android.R.layout.simple_list_item_1是TextView的方式,采用big font,是最为常见的方式。

3)点击List的Callback方法

由于集成了ListActivity,可以直接使用回调函数onListItemClick

4)例子

public class BeginingBook extendsListActivity{
String[] items={"One","Two","Three","Four","Five","Six","Serven"};
private Button button;

@Override

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items));
button =(Button)findViewById(R.id.chapter7);
}
public voidonListItemClick(ListView parent,View v, int position, long id){
button.setText(items[position]);//position是点击的item的序号,从0开始。
}
}

5)不同的呈现模式

我们修改ArrayAdapter的第二个显示的模式。另外可以通过getListView()获取ListView的对象,设置ListView 的一些属性,ListView的一些常用方法:setChoiceMode(),getCheckedItemPositions() 。

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice,items));
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);//表明有选项,如果不设置,缺省为none,即我们点击后仍无反应

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,items));
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//注意,只要点击就会触发Callback,而不过是的点击后选上还是变为取消。

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,items));
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

下面,第一个图为android.R.layout.simple_list_item_1,接着依次为上面三种格式。

List例子二:自定义的List格式(来自Tutorial)

步骤一:建立一个描述list item格式的XML文件

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowtv1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16dip">
</TextView>

步骤二:通过XML定义item

在第一个例子中,我们使用String[]来定制item。但是之前,我们也学习到,为了适合多种语言,最要这些信息都在XML文件中定义,只需更换XML文件,就可以适配不同的语言。我们在string.xml文件中增加相关的定义:

<?xml version="1.0" encoding="utf-8"?>
<resources>
… …
<string-arrayname="countries_arry">
<item>Bharain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
</string-array>
</resources>

步骤三:源代码

listView继承ListActivity的用法" src="https://img.it610.com/image/product/ef622cb76fbd42b789f94132ef60acb1.jpg" alt="转:android listView 继承ListActivity的用法_第2张图片" width="465" align="right" height="768">

public class Chapter7Test2 extendsListActivity{

public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] contries=getResources().getStringArray(R.array.countries_arry);
setListAdapter(new ArrayAdapter<String>(this, R.layout.chapter_7_test2_list, contries));
ListView lv=getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
//Toast.makeText(Chapter7Test2.this, ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});

}
}

Toast

  上面给出Toast的例子。Toast.makeText(对象,文本内容,格式).show()。

更多相关文章

  1. 背部如何画好?动漫人物背部画法步骤
  2. [Android(安卓)NDK]Android(安卓)JNI开发例子 ---3 在JNI中实现o
  3. Android调用天气预报的WebService简单例子
  4. Android(安卓)SDK 1.0 电话号码的例子(Demo)
  5. android 命令(adb shell)进入指定模拟器或设备
  6. Android--WebView+HTML+Javascript
  7. Android例子—直接通过Binder的onTransact完成跨进程通信
  8. Android保存32位BMP格式图片
  9. 怎么去掉联系人、通话记录、拨号列表界面中的电话号码中间的空格

随机推荐

  1. Android实现推送方式解决方案 (转1)
  2. [Android Studio系列(三)]Android Studio
  3. Android ListView 图片异步加载和图片内
  4. 自定义实现类似android主界面的滑屏换屏
  5. Android天线信号刷新流程
  6. android、windows上多个USB Camera同时使
  7. ubuntu12.04 安装android sdk /ndk/源码
  8. 【Android API指南】App组件(8) - Servic
  9. 看了张鸿洋大神那篇公众号推送的文章才是
  10. 【Android 内存优化】Bitmap 内存占用计