列表视图ListView

列表视图是Android中最常见的一种视图组件,它以垂直列表的形式列出需要显示的列表项。比如显示系统设置项或功能内容列表等。在Android中,可以使用两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建;另一种是让Activity继承ListActivity实现
一、直接使用ListView组件创建,此处有两种
一种是直接就在XML文件中指定了item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/cytpe" >
    </ListView>

</LinearLayout>

这里使用了名称为ctype的数组资源,因此我们要在res/values目录中创建一个定义的数组资源的xml文件arrays.xml代码如下

<?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <string-array name="cytpe">
        <item>情景模式</item>
        <item>主题模式</item>
        <item>手机</item>
        <item>程序管理</item>
        <item>通话设置</item>
        <item>连接功能</item>
        </string-array>
    </resources

此处直接运行就出界面了

另一种是不再XML文件中指定资源,通过适配器来指定,代码如下
首先定义XML文件,不指定资源
关键代码:

<ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@drawable/ic_launcher"
        android:dividerHeight="3px"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        >
    </ListView>

然后在Activity中定义适配器,关键代码如下

ListView listView=(ListView)findViewById(R.id.listView1);        ArrayAdapter<CharSequence>adapter=ArrayAdapter.createFromResource(this,R.array.cytpe,android.R.layout.simple_list_item_single_choice);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View arg1, int pos,
                    long id) {
                String result=parent.getItemAtPosition(pos).toString();
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
            }
        });

二、让Activity继承ListActivity实现:
如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity继承ListActivity来实现。继承ListActivity的类中无需调用setContentView方法来显示页面,而是可以直接为其设置适配器,从而显示一个列表。
代码如下:

public class MainActivity  extends ListActivity{
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String []cytpeStrings=new String[]{"情景模式","主题模式","手机","程序管理"};
        ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,cytpeStrings);
        setListAdapter(adapter);
    }
 
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        String resultString=l.getItemAtPosition(position).toString();
        Toast.makeText(getApplicationContext(), resultString, Toast.LENGTH_LONG).show();
    }          
}

至于用户选择了哪项并做哪些动作,可以在监听中定义

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容