列表ListView和ListActivity以及使用SimpleAdapter

创建listview有2种方式

1>直接使用ListView进行创建

2>让Activity继承ListActivity

下面是listview常用的一些属性

案例:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);

        ListView lv = (ListView) findViewById(R.id.lv);

        String[] names = new String[]{ "张三", "李四", "wangwu", "赵六" };
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_expandable_list_item_1, names));
    }

}

<ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

这里使用ArrayAdapter指定了一个textViewResourceId,它代表listview中每个item的外观形式

基于ListActivity实现的列表

如果一个窗口仅仅要显示一个列表,可以直接让activity继承ListActivity,并且无需调用setContentView()来指定某个界面,而是通过传入一个Adapter显示列表信息

也就是说它可以没有布局文件

public class MainActivity2 extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] names = new String[] { "张三", "李四", "wangwu", "赵六" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_multiple_choice, names);
        setListAdapter(adapter);
    }
}

当然也可以给他指定一个布局setContentView(R.layout.xxx),但是listview属性必须指定一个id:  android:id="@+id/android:list"; 否则运行报错

使用SimpleAdapter创建ListVIew

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);

        ListView lv = (ListView) findViewById(R.id.lv);

        String[] names = new String[] { "张三", "李四", "wangwu", "赵六" };
        List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < names.length; i++) {
            Map<String, Object> hashMap = new HashMap<String, Object>();
            hashMap.put("name", names[i]);
            data.add(hashMap);
        }

        lv.setAdapter(new SimpleAdapter(this, data, R.layout.list,
                new String[] { "name" }, new int[] {R.id.tv}));
    }

}


xml

<TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
原文地址:https://www.cnblogs.com/android-zcq/p/3140575.html