ListView的使用(二)

来源:互联网 发布:131458淘宝信誉查询网 编辑:程序博客网 时间:2024/06/05 10:33

ListView的使用(二)


仅为个人学习以备忘,如有帮助,不胜荣幸!!!

说明

上篇博客简要说明了ListView的一般用法,此处为加深版,自定义ListView。在此处要用到BaseAdapter为列表赋值。
代码包含四个文件,两个java文件,两个xml文件。具体代码如下:

CustomActivity.java(主代码)

package com.wangy.ListEX;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;public class CustomActivity extends AppCompatActivity {    private ListView lv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_custom);        lv = (ListView)findViewById(R.id.lv);        //用BaseAdapter填充数据        lv.setAdapter(adapter);    }    private BaseAdapter adapter = new BaseAdapter() {        //要填充的数据        private DataActivity[] data = new DataActivity[]{                new DataActivity("img1","dec img1",R.drawable.img1),                new DataActivity("img2","dec img2",R.drawable.img2),                new DataActivity("img3","dec img3",R.drawable.img3),        };        @Override        //列表项数量        public int getCount() {            return data.length;        }        @Override        //传递一个位置        public DataActivity getItem(int i) {            return data[i];        }        @Override        //获得一个位置的id        public long getItemId(int i) {            return i;        }        @Override        //每显示一项,程序就要创建一个item,为了节省系统内存,要使用view参数;参数view是指从回收池中回收已显示过的数据        public View getView(int i, View view, ViewGroup viewGroup) {            /*应用示例            //这样写会增大系统内存            //TextView tv = new TextView(CustomActivity.this);            //这样写会提高代码效率            TextView tv = null;            if(view!=null){                tv = (TextView)view;            }else{                tv = new TextView(CustomActivity.this);            }            tv.setTextSize(25);            tv.setText(getItem(i));            return tv            */            LinearLayout ll=null;            if(view!=null){                ll = (LinearLayout) view;            }else{                ll = (LinearLayout) LayoutInflater.from(CustomActivity.this).inflate(R.layout.listcell,null);            }            DataActivity data = getItem(i);            //对象重新赋值            ImageView icon = (ImageView) ll.findViewById(R.id.icon);            TextView name = (TextView)ll.findViewById(R.id.name);            TextView dec = (TextView)ll.findViewById(R.id.dec);            icon.setImageResource(data.iconId);            name.setText(data.name);            dec.setText(data.dec);            return ll;        }    };}

DataActivity.java(创建数据格式)

package com.wangy.ListEX;public class DataActivity {    public DataActivity(String name,String dec,int iconId){        this.name = name;        this.dec = dec;        this.iconId = iconId;    }    public String name = "";    public String dec = "";    public int iconId = 0;}

activity_custom.xml(主界面)

<?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"    tools:context="com.wangy.rwinsd.CustomActivity">    <ListView        android:id="@+id/lv"        android:layout_width="match_parent"        android:layout_height="match_parent">    </ListView></LinearLayout>

listcell.xml(item界面)

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal">    <ImageView        android:layout_width="120dp"        android:layout_height="120dp"         android:id="@+id/icon"/>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        android:layout_weight="1">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:id="@+id/name"            android:textAppearance="?android:attr/textAppearanceLarge"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:id="@+id/dec" />    </LinearLayout></LinearLayout>

最终运行效果

运行结果

说明:

在CustomActivity.java(主代码)中也可以使用public class CustomActivity extends ListActivity {。。。}这样可以使用系统自动建立的布局文件,而不用再自己创建主部局。当使用了ListActivity之后,若还想自定义布局,那么在布局中必须包含一个ListView,而且其id必须为“@android:id/list"
0 0