【android】5.listview组件的使用(重要!)

来源:互联网 发布:淘宝棒球服外套女 编辑:程序博客网 时间:2024/05/23 15:42

一、Listview的使用:

1、Listview是可以存放其他组件的容器。

①Listview想要显示条目要调用listview.setAdapter方法设置一个适配器。

②、listview需要被告诉显示多少个条目。

③、指定listview中每个条目显示什么样子。

 

//获取ListView空间:

ListViewlv= (ListView) this.findViewById(R.id.lv);

 

// 要想设置listview的显示的内容 就需要把listview的数据适配器给设置进去

lv.setAdapter(new MyAdapter());

 

 //给listview的每一个条目注册点击事件.

//setOnItemClickListener方法参数为:ClickListener接口的子类

 lv.setOnItemClickListener(newOnItemClickListener() {

    //点击条目执行参数(listview对象,当前点击条目的view对象,位置,行号)

    public voidonItemClick(AdapterView<?> parent, View view,

                    intposition, long id) {

//获取适配器中getItem()方法的返回值。

lv.getItemAtPosition(position);

//获取适配器中getItemId方法的返回值。

lv.getItemIdAtPosition(position);

    }

 });

 

 

2、自定义适配器类,继承BaseAdapter类。

    publicclass MyAdapter extends BaseAdapter{

 

    /**

      * 告诉listview显示多个条目

     */

        @Override

        public int getCount() {

            return5;

        }

 

       

        /**

         * 返回每一个条目对应的对象。

         */

        @Override

        public Object getItem(int position) {

            returnnull;

        }

 

       

        /**

         * 返回每一个条目对应的编号,

         */

        @Override

        public long getItemId(int position) {

            returnposition;

        }

 

        /**

         * 设置listview每一个条目显示成什么样子,并返回每个组件。

         * 这个方法会被调用多少次?

         * 方法参数1:当前条目显示的位置,从0开始

          *方法的返回值是:view对象。

         */

        @Override

        public View getView(int position, ViewconvertView, ViewGroup parent) {

            if(position==0){//第一个位置。

//创建TextView 对象。

            TextViewtv = new TextView(DemoActivity.this);

            tv.setText("我是第一个textview");

            returntv;

            }

            if(position==1){

//创建图片view

                ImageView iv = newImageView(DemoActivity.this);

                iv.setImageResource(R.drawable.ic_launcher);

                return iv;

            }

            TextViewtv1 = new TextView(DemoActivity.this);

            tv1.setText("我是textview"+position);

            returntv1;      

        }

    }

}

二、系统提供的适配器:

1、SimpleAdapter类:

      ListView lv = (ListView) this.findViewById(R.id.lv);

       LayoutInflater inflater = (LayoutInflater)getSystemService(

LAYOUT_INFLATER_SERVICE);

      datas =new ArrayList<Map<String,String>>();

       

      for(Person p : persons){

        Map<String,String> map = newHashMap<String, String>();

         map.put("name", p.getName());

         map.put("phone", p.getPhone());

         datas.add(map);

        }

//设置适配器

lv.setAdapter(new SimpleAdapter(this, datas,

 R.layout.item,

new String[]{"name","phone"},

newint[]{R.id.tv_name,R.id.tv_phone}));

 

SimpleAdapter 类构造函数的参数:

参数1:上下文,

参数2:数据,list集合中是map集合。List<Map<String,String>>

参数3:条目显示的布局,布局对应的资源文件。

参数4:对象的属性,map中作为key的值。

参数5:组件的id的int数组。

2、ArrayAdapter类:

lv.setAdapter(new ArrayAdapter<String>(this,R.layout.item,

R.id.tv_name,new String[]{"张三","李四","王五"}));

三、布局填充器的使用:

1、填充器,将布局的xml中的布局转成view对象:

2、获取布局填充器对象:

 LayoutInflater inflater = (LayoutInflater)getSystemService(

LAYOUT_INFLATER_SERVICE);

 

//将布局文件转成view对象的的方法,参数(布局的xml文件, 是否独立的参数)

//R.layout.item:对应layout目录下的item.xml文件。

 

View  view =inflater.inflate(R.layout.item, null);

//获取view对象中的id为tv_name的组件。

TextView tv_name= (TextView) view.findViewById(R.id.tv_name);

 

3、layout目录下的item.xml文件内容为:

 

<?xml version="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

   android:layout_height="wrap_content"

   android:gravity="center_horizontal" <!--指定空间显示位置,center_horizontal:居中显示  -->

   android:orientation="vertical" >

 

   <TextView

       android:id="@+id/tv_name"

        android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="姓名"

       android:textAppearance="?android:attr/textAppearanceLarge"/>

 

   <TextView

       android:id="@+id/tv_phone"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="电话号码"

       android:textSize="18sp"

      />

</LinearLayout>

0 0
原创粉丝点击