zoukankan      html  css  js  c++  java
  • 2017.12.4 Android开发之ListView组件

    1.修改布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="com.example.chuny.ch10listview.MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!" />
        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/listview"></ListView>
    </LinearLayout>

    2.修改Java文件:

    3.运行效果:

     

    4.介绍三种适配器:

    (1)读取手机通讯录的信息的方法:读取数据

        private List<String> getContactName(){
            List<String> contacts=new ArrayList<>();                  //List<String>指定List的类型只能是String
              //定义一个内容解析器,就是凡是读到手机系统资源的,都需要一个内容解析器
            ContentResolver cr=getContentResolver();
            //获取手机通信录的地址
            Cursor cursor=cr.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);        //定义一个游标,URI是手机通讯录,也可以改为手机短信的URI
    
            //循环读取通讯录里边的联系人
            if(cursor.moveToFirst()){
                do{
                    String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));        //游标类型转化为数据类型
                    //读取手机通信录中的联系人姓名
                    contacts.add(name);
                }while(cursor.moveToNext());
            }
            cursor.close();     //关闭游标,游标类似指针,读取数据库时
            return contacts;
        }

    定义适配器:

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            listView=(ListView)findViewById(R.id.listview);
           // ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,dataSource);
            //listView.setAdapter(adapter);
            ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,getContactName());
            listView.setAdapter(adapter);
        }

    报错:

    修改权限:安卓中调用不同资源,需要不同的权限

     运行效果:

     这个程序运行在Android6.0以及以上版本,会发生还是未授权的现象:因为Android6.0以及以上的都需要二次授权(按照组来划分的,给了一个权限就等于这个组内的权限都给了)

    API大于等于23以后的授权方式的更改:

    1.在Mainfest文件中定义,安装的时候用户必须同意才能安装

    2.在用户执行程序的时候问用户要权限

    (2)SimpleCursorAdapter

    (3)SimpleAdapter:可以自定义显示的样式,最好用的一个Adapter

    首先自己定义一个布局文件,用户显示每一个数据的内容格式,用于循环显示数据:

  • 相关阅读:
    2.Liunx 系统设置
    1.Liunx 文件管理
    Liunx 更新环境时用到的命令
    解决SSH Secure Shell 连接Liunx 有乱码情况。
    JMeter 性能测试基本过程及示例(4)
    在 macOS 中怎样获取当前文件夹的路径?
    Mac环境安装启动jmeter
    StringUtils工具类常用方法汇总1(判空、转换、移除、替换、反转)
    Json与Gson
    Quartz的基本使用之入门(2.3.0版本)
  • 原文地址:https://www.cnblogs.com/hqutcy/p/7977614.html
Copyright © 2011-2022 走看看