安卓常用控件:列表视图

一,思维导图
在这里插入图片描述

二,继承关系图
在这里插入图片描述
四种适配器
列表视图(ListView),它是AdapterView的子类,要通过适配器作为梁桥来绑定数据源。有四种适配器可以使用:数组适配器(ArrayAdapter)、简单适配器(SimpleAdapter)、简单游标适配器(SimpleCursorAdapter)、基适配器(BaseAdapter)。
三,实例
1,运行效果
2,实现步骤
(1)创建安卓应用
(2)布局资源文件activity_main

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tv_icon"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:layout_weight="0.5"
            android:text="@string/icon"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/tv_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/name"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/tv_phone"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1.5"
            android:text="@string/phone"
            android:textSize="20sp" />
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:background="#aaaaaa"/>

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

</LinearLayout>

用户列表项模板user_list_item.xml

<TextView
    android:id="@+id/tv_name"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textColor="#0000ff"
    android:textSize="20sp" />

<TextView
    android:id="@+id/tv_phone"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.5"
    android:textColor="#ff00ff"
    android:textSize="20sp" />
(3)字符串资源文件
<resources>
    <string name="app_name">0605damo_phone</string>
    <string name="icon">图片</string>
    <string name="name">姓名</string>
    <string name="phone">电话号码</string>
</resources>

(4)主界面main文件

public class MainActivity extends Activity {

  private ListView lvUser;

  private List<HashMap<String, Object>> users;

  private SimpleAdapter adapter;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      // 利用布局资源文件设置用户界面
      setContentView(R.layout.activity_main);

      // 通过资源标识获得控件实例
      lvUser = findViewById(R.id.lv_user);

      // 初始化用户列表(数据源)
      users = getUsers();

      // 创建简单适配器
      adapter = new SimpleAdapter(
                    this, // 上下文环境
                    users, // 数据源(数组列表)
                    R.layout.user_list_item, // 列表项模板
                    new String[] {"icon", "name", "phone"}, // 字段名数组
                    new int[] {R.id.iv_icon, R.id.tv_name, R.id.tv_phone} // 控件标识数组
      );
      // 给列表控件设置适配器
      lvUser.setAdapter(adapter);
  }
  
  private List<HashMap<String,Object>> getUsers() {
      ArrayList<HashMap<String, Object>> users = new ArrayList<>();
      HashMap<String, Object> user = null;
      // 创建第1个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img1);
      user.put("name", "李晓云");
      user.put("phone", "15890904567");
      // 将该用户添加到用户列表
      users.add(user);

      // 创建第2个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img2);
      user.put("name", "张三丰");
      user.put("phone", "159345611222");
      // 将该用户添加到用户列表
      users.add(user);

      // 创建第3个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img3);
      user.put("name", "郑智化");
      user.put("phone", "13890905610");
      // 将该用户添加到用户列表
      users.add(user);

      // 创建第4个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img4);
      user.put("name", "李克勤");
      user.put("phone", "13823234590");
      // 将该用户添加到用户列表
      users.add(user);

      // 创建第5个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img5);
      user.put("name", "梅艳芳");
      user.put("phone", "13878781120");
      // 将该用户添加到用户列表
      users.add(user);

      // 创建第6个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img6);
      user.put("name", "王晓峰");
      user.put("phone", "13890903456");
      // 将该用户添加到用户列表
      users.add(user);

      // 创建第7个用户
      user = new HashMap<>();
      user.put("icon", R.mipmap.img7);
      user.put("name", "佟大为");
      user.put("phone", "15812125690");
      // 将该用户添加到用户列表
      users.add(user);

      return users;
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值