Android控件之ListView

来源:互联网 发布:exe软件制作工具 编辑:程序博客网 时间:2024/04/24 17:53

ListView用来实现列表显示,要通过一个Adapter来构建显示内容,可以使用的Adapter有三种,ArrayAdapter,SimpleAdapter和CursorAdapter。

首先介绍一个ListView的简单用法,当我们在一个Activity只需要显示一个ListView时可以这样使用:

public class listView extends ListActivity{

String[] COUNTRIES=new String[]{
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
   "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
   "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
   "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
   "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia","......"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

//首先通过ArrayAdapter构建要显示的数据及其格式,数据存在COUNTRIES中,

//每个数据item的格式在list_item.xml文件中
setListAdapter(new ArrayAdapter<String>(this,R.layout.list_item,COUNTRIES));
ListView listView=getListView();

//开启文字过滤功能,例如当我们输入一个Aus,他会自动帮我们找出以Aus为开头的item
listView.setTextFilterEnabled(true);

listView.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), 
((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();

}

});
}


}


list_item.xml代码:

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

运行效果如下图所示:



下面介绍一个ListView更复杂一点的用法。



类的源码如下:

package lhp.widgetStudy;


import java.util.ArrayList;
import java.util.HashMap;


import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;


public class ListViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
ListView listView=(ListView)findViewById(R.id.listView);
ArrayList<HashMap<String,Object>> listViewItem=new ArrayList<HashMap<String,Object>>();

for(int i=0;i<10;i++){
HashMap<String,Object> map=new HashMap<String,Object>();
map.put("ItemImage", R.drawable.ic_launcher);
map.put("ItemTitle", "This is title...");
map.put("ItemText", "This is text...");
listViewItem.add(map);
}
SimpleAdapter simpleAdapter=new SimpleAdapter(this,
listViewItem, //数据的来源
R.layout.list_view_item,//每个条目的布局文件
new String[]{"ItemImage","ItemTitle","ItemText"},
new int[]{R.id.iamgeView,R.id.textView01,R.id.textView02});

listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "haha", Toast.LENGTH_SHORT).show();

}

});
}


}

整个Activity的布局文件listView.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" >
    
<ListView 
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:id="@+id/listView" />

</LinearLayout>

每个条目(item)的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

<ImageView 
   android:id="@+id/imageView"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/ic_launcher" />
<TextView
   android:id="@+id/textView01"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:textSize="22dip"
   android:layout_toRightOf="@+id/imageView" />
<TextView
   android:id="@+id/textView02"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_toRightOf="@+id/iamgeView"
   android:layout_below="@+id/textView01" 
   android:layout_alignLeft="@+id/textView01"/>
  
</RelativeLayout>

原创粉丝点击