zoukankan      html  css  js  c++  java
  • Android——列表视图(ListView)

    列表视图是android中最常用的一种视图组件,它以垂直列表的形式列出需要显示的列表项。在android中有两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建;另外一种是让Activity继承ListActivity实现。下面分别介绍这两种方法:

    一、直接使用ListView组件创建

    在布局文件中首先添加ListView

    代码如下:

    <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>
    

    直接运行就可以看到如下所示的列表视图:

    下面通过适配器来指定列表项来创建ListView

    布局代码:

    <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:divider="@drawable/ic_launcher"
            android:dividerHeight="3px"
            android:footerDividersEnabled="false"
            android:headerDividersEnabled="false"
            >
    
        </ListView>
    
    </LinearLayout>
    

    Java代码:

    package com.basillee.blogdemo;
    
    import java.lang.annotation.Retention;
    import java.util.List;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		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方法来显示页面,而是可以直接为其设置适配器,从而显示一个列表。

    废话少说直接看看代码大家就都懂了:

    package com.basillee.blogdemo;
    
    import java.lang.annotation.Retention;
    import java.util.List;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.ListActivity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.Toast;
    
    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();
    	}
    		
    
    }
    

      

  • 相关阅读:
    Java学习开篇
    《我的姐姐》
    世上本无事,庸人自扰之
    这48小时
    补觉
    淡定
    es java api 设置index mapping 报错 mapping source must be pairs of fieldnames and properties definition.
    java mongodb groupby分组查询
    linux 常用命令
    mongodb too many users are authenticated
  • 原文地址:https://www.cnblogs.com/BasilLee/p/4115093.html
Copyright © 2011-2022 走看看