初学笔记3

主要是ListActivity,顺便用了下simpleAdapter
1**.public class Myactivity extents ListActivity{}**
An activity that displays a list of items by binding to a data source such as an array or Cursor, and exposes event handlers when the user selects an item.
Screen Layout
ListActivity has a default layout that consists of a single, full-screen list in the center of the screen;
you can customize the screen layout by setting your own view layout with setContentView() in onCreate(). To do this, your own view MUST contain a ListView object with the id “@android:id/list” (or android.R.id.list if it’s in code)

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingLeft="8dp"
         android:paddingRight="8dp">

     <ListView android:id="@android:id/list"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"
               android:drawSelectorOnTop="false"/>

     <TextView android:id="@android:id/empty"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:text="No data"/>
 </LinearLayout>

row layout
A ListAdapter constructor takes a parameter that specifies a layout resource for each row. It also has two additional parameters that let you specify which data field to associate with which object in the row layout resource. These two parameters are typically parallel arrays.
Android provides some standard row layout resources. These are in the android.R.layout class, and have names such as simple_list_item_1, simple_list_item_2, and two_line_list_item. The following layout XML is the source for the resource two_line_list_item, which displays two data fields,one above the other, for each list row.
simple_list_item_2, and two_line_list_item前者两行字一大一小,后者两行字大小相同,上一行为粗体

<?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="wrap_content"
     android:orientation="vertical">

     <TextView android:id="@+id/text1"
         android:textSize="16sp"
         android:textStyle="bold"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>

     <TextView android:id="@+id/text2"
         android:textSize="16sp"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
 </LinearLayout>

band data
You bind the ListActivity’s ListView object to data using a class that implements the ListAdapter interface. Android provides two standard list adapters: SimpleAdapter for static data (Maps), and SimpleCursorAdapter for Cursor query results.
The following code from a custom ListActivity demonstrates querying the Contacts provider for all contacts, then binding the Name and Company fields to a two line row layout in the activity’s ListView.

public class MyListAdapter extends ListActivity {

     @Override
     protected void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);

         // We'll define a custom screen layout here (the one shown above), but
         // typically, you could just use the standard ListActivity layout.
//加载的布局是自定义的         setContentView(R.layout.custom_list_activity_view);

         // Query for all people contacts using the android.provider.Contacts.People convenience class.
         // Put a managed wrapper around the retrieved cursor so we don't have to worry about
         // requerying or closing it as the activity changes state.
         mCursor = this.getContentResolver().query(People.CONTENT_URI, null, null, null, null);
         startManagingCursor(mCursor);

         // Now create a new list adapter bound to the cursor.
         // SimpleListAdapter is designed for binding to a Cursor.
         ListAdapter adapter = new SimpleCursorAdapter(
                 this, // Context.
                 //此处是系统自带的布局
                 android.R.layout.two_line_list_item,  // Specify the row template to use (here, two columns bound to the two retrieved cursor
 rows).
                 mCursor,                                              // Pass in the cursor to bind to.
                 new String[] {People.NAME, People.COMPANY},           // Array of cursor columns to bind to.
                 new int[] {android.R.id.text1, android.R.id.text2});  // Parallel array of which template objects to bind to those columns.

         // Bind to our new adapter.
         setListAdapter(adapter);
     }
 }

请注意中文注释处的不同,上面这段代码不对。。。。。。有一些地方要改。。我不知道怎么改,哪位大侠会。。。。这是adt自带的说明中的代码
2.
java.util.Map(String, String>(“(“means”<”,下同,不知怎么回事,这个双尖括号会让下面的全看不见,这语法不懂)

A Map is a data structure consisting of a set of keys and values in which each key is mapped to a single value. The class of the objects used as keys is declared when the Map is declared, as is the class of the corresponding values.

A Map provides helper methods to iterate through all of the keys contained in it, as well as various methods to access and update the key/value pairs.
java.util.List(>

A List is a collection which maintains an ordering for its elements. Every element in the List has an index. Each element can thus be accessed by its index, with the first index being zero. Normally, Lists allow duplicate elements, as compared to Sets, where elements have to be unique.
List和map使用

private final List<Map<String, String>> data = new ArrayList<Map<String,String>>();
Map<String, String> map1 = new HashMap<String, String>();  
        map1.put("姓名", "风晴雪");                 
        data.add(map1);  
        Map<String, String> map2 = new HashMap<String, String>();  
        map2.put("姓名", "悭臾");  
        data.add(map2);  

下面这句代买就可以把list的数据绑定到android.R.layout.simple_list_item_1

setListAdapter(new SimpleAdapter(this,data,android.R.layout.simple_list_item_1,  
                new String[]{"姓名"},            //每行显示一个姓名  
                new int[]{android.R.id.text1}   //名字在text1上显示 
public class ListViewDemo extends ListActivity {

    private List<Map<String, String>> data = new ArrayList<Map<String,String>>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("姓名", "风晴雪");
        map1.put("性别", "女的");
        data.add(map1);
        Map<String, String> map2 = new HashMap<String, String>();
        map2.put("姓名", "悭臾");
        map2.put("性别", "公的");
        data.add(map2);
        Map<String, String> map3 = new HashMap<String, String>();
        map3.put("姓名", "百里屠苏");
        map3.put("性别", "男的");
        data.add(map3);
        setListAdapter(new SimpleAdapter(this,data,android.R.layout.simple_list_item_2,
                new String[]{"姓名","性别"},            //每行显示一组姓名和性别
                new int[]{android.R.id.text1,android.R.id.text2}   //名字在text1上显示,性别在text2上显示
        ));
    }
}

综合以上。我们可以有两种写法:
1)不写setContentView(R.layout.layoutname),即不需要xml文件相当于用screen layout的默认,然后在adapter中用一个布局方式,可以是自定义也可以用系统自带的
2)写setContentView(R.layout.layoutname);像第1条screen那样写layoutname.xml就可以了,即必须包含ID为list的listview和ID为empty的textview,然后在adapter中用一个布局

simple_list_item_single_choice、simple_list_item_multiple_choice、simple_list_item_checked
只需要修改Adapter中layoutId就可以了

*include layout=”@android:layout/simple_list_item_1”
我们可以在一个布局中包含另一个布局*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值