Android 自定义ListView

来源:互联网 发布:宝黛爱情知乎 编辑:程序博客网 时间:2024/06/05 16:59

1、适配器:MyListAdapter

package com.example.shaolin.myapplication;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;import java.util.Map;/** * Created by shaolin on 8/12/15. */public class MyListAdapter extends BaseAdapter{    private List<Map<String, Object>> data;    private LayoutInflater layoutInflater;    private Context context;    public MyListAdapter(Context context,List<Map<String, Object>> data){        this.context=context;        this.data=data;        this.layoutInflater=LayoutInflater.from(context);    }    /**     * 组件集合,对应list.xml中的控件     * @author Administrator     */    public final class Zujian{        public ImageView image;        public TextView title;    }    @Override    public int getCount() {        return data.size();    }    @Override    public Object getItem(int position) {        return data.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Zujian zujian=null;        if(convertView==null){            zujian=new Zujian();            //获得组件,实例化组件            convertView=layoutInflater.inflate(R.layout.list, null);            zujian.image=(ImageView)convertView.findViewById(R.id.image);            zujian.title=(TextView)convertView.findViewById(R.id.title);            convertView.setTag(zujian);        }else{            zujian=(Zujian)convertView.getTag();        }        //绑定数据        zujian.image.setBackgroundResource((Integer) data.get(position).get("image"));        zujian.title.setText((String)data.get(position).get("title"));        return convertView;    }}

2、ListView中的Item布局:list.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="horizontal">        <ImageView            android:id="@+id/image"            android:layout_width="wrap_content"            android:layout_gravity="center_vertical"            android:layout_height="wrap_content" />        <TextView            android:id="@+id/title"            android:layout_width="wrap_content"            android:layout_gravity="center_vertical"            android:layout_height="wrap_content"            android:textColor="#666872" />    </LinearLayout></LinearLayout>

3、ListView布局:activity_list_view.xm

<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:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    tools:context="com.example.shaolin.myapplication.ListViewActivity">    <ListView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/listView"        android:scrollbars="vertical" /></LinearLayout>

4、例子:ListViewActivity.java

package com.example.shaolin.myapplication;import android.app.Activity;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class ListViewActivity extends ActionBarActivity {    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_list_view);        listView=(ListView)findViewById(R.id.listView);        List<Map<String, Object>> list=getData();        listView.setAdapter(new MyListAdapter(this, list));    }    public List<Map<String, Object>> getData(){        List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();        for (int i = 0; i < 20; i++) {            Map<String, Object> map=new HashMap<String, Object>();            map.put("image", R.mipmap.ic_launcher);            map.put("title", "这是一个标题"+(i+1));            list.add(map);        }        return list;    }}

0 0
原创粉丝点击