zoukankan      html  css  js  c++  java
  • ListView的使用

    ListView 是列表组件,是Android中很常用的组件,列表显示信息由以下3个部分组成:

    1、ListView组件

    2、适配器,用来将数据映射到ListView组件中。

    3、列表中要显示的数据

    以下是几种适配器:

    (1) ---ArrayAdapter---只显示一行文字 (2)---SimpleAdapter---自定义每行的数据显示形式 (3) ---SimpleCoursorAdapter---把数据库中的内容以列表的方式显示出来

    一、ArrayAdapter

    MainActivity.java代码如下:

     1 package com.example.lenovo.a1107;
     2 
     3 import android.support.v7.app.AppCompatActivity;
     4 import android.os.Bundle;
     5 import android.view.Menu;
     6 import android.view.MenuItem;
     7 import android.widget.ArrayAdapter;
     8 import android.widget.LinearLayout;
     9 import android.widget.ListView;
    10 
    11 import java.util.ArrayList;
    12 import java.util.List;
    13 
    14 public class MainActivity extends AppCompatActivity {
    15 
    16     private LinearLayout myLayout;
    17     private ListView myListView;
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         setContentView(R.layout.activity_main);
    22         myLayout=(LinearLayout)findViewById(R.id.myLayout);
    23 
    24         myListView=new ListView(this);
    25 
    26         //创建ArrayAdapter适配器。构造函数中的第一个参数:Context,第二个:每一行的布局资源文件
    27         //                         第三个:数据源,一个List集合
    28         ArrayAdapter<String> adpater=new ArrayAdapter<String>(this,
    29                 android.R.layout.simple_expandable_list_item_1,getMyData());
    30 
    31         myListView.setAdapter(adpater);
    32         myLayout.addView(myListView);
    33 
    34     }
    35 
    36     public List<String>getMyData(){
    37         List<String> myList=new ArrayList<String>();//创建List对象,并向其中添加数据
    38         myList.add("数据项1");
    39         myList.add("数据项2");
    40         myList.add("数据项3");
    41         myList.add("数据项4");
    42         return myList;
    43 
    44     }
    45 
    46 }
    View Code

    .xml代码如下:

    1 <LinearLayout
    2     xmlns:android="http://schemas.android.com/apk/res/android"
    3     android:id="@+id/myLayout"
    4     android:layout_width="fill_parent"
    5     android:layout_height="fill_parent"
    6     android:orientation="vertical"
    7      >
    8 
    9 </LinearLayout>

    2、SimpleAdapter

        创建SimpleAdapter对象时,有5个参数,

      第一个:上下文。

      第二个:一个list类的集合,该集合是Map类型

      第三个:每一行的布局资源文件(listviewrow)(可自定义)。

      第四个:HashMap中的key值。

      第五个:下面是listviewroe.xml里的组件id。

    lisviewExample.java代码如下:

     1 package com.example.lenovo.a1107;
     2 
     3 import android.app.Activity;
     4 import android.graphics.Color;
     5 import android.os.Bundle;
     6 import android.view.View;
     7 import android.widget.AdapterView;
     8 import android.widget.LinearLayout;
     9 import android.widget.ListView;
    10 import android.widget.SimpleAdapter;
    11 import android.widget.Toast;
    12 
    13 import java.util.ArrayList;
    14 import java.util.HashMap;
    15 import java.util.List;
    16 import java.util.Map;
    17 
    18 /**
    19  * Created by Lenovo on 2015/11/7.
    20  */
    21 public class ListViewExample extends Activity {
    22     private LinearLayout myLayout;
    23     private ListView myListView;
    24 
    25     List<Map<String,Object>>list=new ArrayList<Map<String,Object>>();
    26                                           //创建List对象,用来存放列表每一行的Map信息
    27 
    28     @Override
    29     protected void onCreate(Bundle savedInstanceState) {
    30         super.onCreate(savedInstanceState);
    31         setContentView(R.layout.activity_main);
    32         myLayout=(LinearLayout)findViewById(R.id.myLayout);
    33                                  //获取LinearLayout对象
    34         myListView=new ListView(this);
    35 
    36         //创建布局参数
    37         LinearLayout.LayoutParams tripListViewParam=new LinearLayout.
    38                 LayoutParams(
    39                 LinearLayout.LayoutParams.FILL_PARENT,
    40                 LinearLayout.LayoutParams.FILL_PARENT);
    41 
    42         myListView.setCacheColorHint(Color.GRAY);//当拖拽列表时,显示的颜色
    43         myLayout.addView(myListView, tripListViewParam);//将列表tripListView添加到布局myListView中
    44 
    45         SimpleAdapter adapter=new SimpleAdapter(this,getTripListData(),R.layout.listviewrow,
    46                               new String[]{"img","name","money","zhe"},new int[]{R.id.tripImg,
    47                               R.id.phoneName, R.id.phoneMoney,R.id.phoneDiscount});
    48                         //构建SimpleAdapter对象,5个参数
    49 
    50         myListView.setAdapter(adapter);//为列表添加适配器
    51 
    52         myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    53             @Override
    54             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    55                 Toast.makeText(ListViewExample.this,"您选择的是"+list.get(position).get("name").
    56                                 toString(), Toast.LENGTH_SHORT).show();
    57             }
    58         });  //列表的单击事件
    59 
    60     }
    61     public List<Map<String,Object>>getTripListData(){
    62         Map<String,Object> map=new HashMap<String,Object>();
    63         map.put("img",R.drawable.pic1);
    64         map.put("name","iphone6s 16G");
    65         map.put("money","4600元");
    66         map.put("zhe","8.8折");
    67         list.add(map);
    68         map.put("img",R.drawable.pic2);
    69         map.put("name","iphone6 plus 16G");
    70         map.put("money","5600元");
    71         map.put("zhe", "9.0折");
    72         list.add(map);
    73         map=new HashMap<String,Object>();
    74         map.put("img",R.drawable.pic3);
    75         map.put("name","SAMSUNG 16G");
    76         map.put("money","3600元");
    77         map.put("zhe", "8.5折");
    78         list.add(map);
    79         return list;
    80     }
    81 }
    View Code

    layout/main.xml文件

    1 <LinearLayout
    2     xmlns:android="http://schemas.android.com/apk/res/android"
    3     android:id="@+id/myLayout"
    4     android:layout_width="fill_parent"
    5     android:layout_height="fill_parent"
    6     android:orientation="vertical"
    7      >
    8 
    9 </LinearLayout>

    layout/listViewrow.xml代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     android:orientation="horizontal"
     5     android:layout_width="fill_parent"
     6     android:layout_height="match_parent">
     7 
     8     <ImageView
     9         android:id="@+id/tripImg"
    10         android:layout_width="110dp"
    11         android:layout_height="120dp"
    12         android:layout_margin="10dp"
    13         />
    14     <LinearLayout
    15         android:orientation="vertical"
    16         android:layout_width="wrap_content"
    17         android:layout_height="wrap_content"
    18         android:layout_marginTop="10dp"
    19         >
    20         <TextView
    21             android:id="@+id/phoneName"
    22             android:layout_width="wrap_content"
    23             android:layout_height="wrap_content"
    24             android:textColor="#ff0000"
    25             />
    26         <TextView
    27             android:id="@+id/phoneMoney"
    28             android:layout_width="wrap_content"
    29             android:layout_height="wrap_content"
    30             android:textColor="#ff000000"
    31             android:layout_marginTop="5dp"
    32             android:layout_marginRight="25dp"
    33             />
    34         <TextView
    35             android:id="@+id/phoneDiscount"
    36             android:layout_width="wrap_content"
    37             android:layout_height="wrap_content"
    38             android:textColor="#ff1010"
    39             android:layout_marginTop="5dp"
    40             android:layout_marginRight="25dp"
    41             />
    42         </LinearLayout>
    43 
    44 </LinearLayout>
    View Code

    3、SimpleCursorAdapter

       它允许绑定一个游标的列到ListView上,并可以使用自定义的layout显示每个项目

    SimpleCursorAdapterExample.java代码如下:

     1 package com.example.lenovo.a1107;
     2 
     3 
     4 import android.app.Activity;
     5 import android.database.Cursor;
     6 import android.os.Bundle;
     7 import android.provider.Contacts;
     8 import android.widget.LinearLayout;
     9 import android.widget.ListAdapter;
    10 import android.widget.ListView;
    11 import android.widget.SimpleCursorAdapter;
    12 
    13 public class SimpleCursorAdapterExample extends Activity {
    14     private ListView myListView;
    15     private LinearLayout myLayout;
    16 
    17     @Override
    18     protected void onCreate(Bundle savedInstanceState) {
    19         super.onCreate(savedInstanceState);
    20         setContentView(R.layout.activity_main);
    21         myLayout = (LinearLayout) findViewById(R.id.myLayout);
    22 
    23         myListView = new ListView(this);
    24 
    25         Cursor cursor = getContentResolver().query(Contacts.People.CONTENT_URI,null,
    26                 null,null,null);
    27         startManagingCursor(cursor);
    28         ListAdapter listAdapter = new SimpleCursorAdapter(this,
    29                 android.R.layout.simple_expandable_list_item_1,cursor,
    30                  new String[]{Contacts.People.NAME}, new int[]{android.R.id.text1});
    31 
    32         myListView.setAdapter(listAdapter);
    33         myLayout.addView(myListView);
    34     }
    35 }
    View Code


    main.xml布局文件与上一个一样~~

    别忘记在注册访问手机联系人的权限。

     关于安卓的各种权限见此O(∩_∩)O~:http://bbs.51cto.com/thread-1096739-1.html
  • 相关阅读:
    回溯算法
    cannot import name 'np' in mxnet
    Linux后台运行任务 nohup &
    为Windows Terminal添加右键菜单
    Outlook设置QQ邮箱
    逻辑回归 logistic regression
    Python添加自定义目录到sys.path
    强化学习 策略梯度
    为Windows terminal preview添加右键菜单
    双系统使用Linux引导
  • 原文地址:https://www.cnblogs.com/Lynn0814/p/4945726.html
Copyright © 2011-2022 走看看