BaseAdapter优化------文艺式
来源:互联网 发布:海康威视网络ddns 编辑:程序博客网 时间:2024/05/05 05:41
1、在activity_main.xml中定义一个ListView
<RelativeLayout 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=".MainActivity"> <ListView android:id="@+id/lv_main" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
2、定义listview并绑定适配器需要以下3步
1)findViewById找到ListView
2)定义dataList,并模拟数据
List<ItemBean> dataList = new ArrayList<ItemBean>();
3) 设置适配器 listView.setAdapter(new MyAdapter(this, dataList));
具体MainActivity.java如下:
package com.huangyi.baseadapterdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.lv_main); List<ItemBean> dataList = new ArrayList<ItemBean>(); // 创建假数据 for (int i = 0; i < 20; i++) { dataList.add(new ItemBean( R.drawable.ic_launcher, "我是标题" + i, "我是内容" + i)); } // 设置适配器 listView.setAdapter(new MyAdapter(this, dataList)); }}3、数据源实体类ItemBean
ItemBean.java
package com.huangyi.baseadapterdemo;public class ItemBean { public int itemImageResid; public String itemTitle; public String itemContent; public ItemBean(int itemImageResid, String itemTitle, String itemContent) { this.itemImageResid = itemImageResid; this.itemTitle = itemTitle; this.itemContent = itemContent; }}
4、单个item条目:图像、标题、内容
item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="60dp" android:layout_height="60dp" android:id="@+id/iv_image" android:src="@drawable/ic_launcher" /> <TextView android:layout_width="match_parent" android:layout_height="30dp" android:text="Title" android:gravity="center" android:textSize="25sp" android:id="@+id/tv_title" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/iv_image" /> <TextView android:layout_width="match_parent" android:layout_height="30dp" android:text="Content" android:textSize="20sp" android:gravity="center_vertical" android:id="@+id/tv_content" android:layout_below="@id/tv_title" android:layout_toEndOf="@+id/iv_image" /></RelativeLayout>
5、Adapter适配器
这个适配器继承BaseAdapter,需要重写里面的几个方法,其中最重要的方法是
getView(),这个方法将一个xml文件(item.xml)转化为一个View;
还有就是这个类需要一个构造方法MyAdapter,里面需要2个参数,第一个是context与MainActivity
中的this对应,还有就是装在Bean对象的list集合,这也与MainActivity中装在Bean对象的ArrayList<ItemBean>相对应。
package com.huangyi.baseadapterdemo;import java.util.List;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;public class MyAdapter extends BaseAdapter { private LayoutInflater mLayoutInflater; // 映射数据 private List<ItemBean> mDataList; private long mSumTime; public MyAdapter(Context context, List<ItemBean> list) { mLayoutInflater = LayoutInflater.from(context); mDataList = list; } // 获取数据量 @Override public int getCount() { return mDataList.size(); } // 获取对应ID项对应的Item @Override public Object getItem(int position) { return mDataList.get(position); } // 获取对应项ID @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); //由于我们只需要将XML转化为View,并不涉及到具体的布局,所以第二个参数通常设置为null convertView = mLayoutInflater.inflate(R.layout.item, null); holder.img = (ImageView) convertView.findViewById(R.id.iv_image); holder.title = (TextView) convertView.findViewById(R.id.tv_title); holder.content = (TextView) convertView.findViewById(R.id.tv_content); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //取出bean对象 ItemBean bean = mDataList.get(position); //设置控件的数据 holder.img.setImageResource(bean.itemImageResid); holder.title.setText(bean.itemTitle); holder.content.setText(bean.itemContent); return convertView; } // ViewHolder用于缓存控件 class ViewHolder{ public ImageView img; public TextView title; public TextView content; }}
这里需要注意:
1)充分利用ListView的缓存机制
if (convertView == null) {.......
}
2)ViewHolder用于缓存控件
0 0
- BaseAdapter优化------文艺式
- BaseAdapter使用的三种形式,逗比式,普通式,文艺式
- BaseAdapter的三重境界,逗比式,普通式,文艺式
- BaseAdapter优化
- BaseAdapter优化
- BaseAdapter优化
- BaseAdapter优化
- ListView性能优化——文艺式写法
- android:ListView缓存机制及BaseAdapter的三重境界(逗比式,普通式,文艺式)
- android:ListView缓存机制及BaseAdapter的三重境界(逗比式,普通式,文艺式)
- listview baseadapter优化
- BaseAdapter 运用和优化
- ListView与BaseAdapter优化
- BaseAdapter优化深入分析
- 利用ViewHolder优化BaseAdapter
- ## BaseAdapter的优化 ##
- BaseAdapter使用与优化
- BaseAdapter 的优化
- On Hat Puzzle 2.1: From Dr. Todd Ebert's thesis
- Linux下载安装sshd服务,用SecureCRT连接虚拟机
- 二维RMQ
- hdu 4666 Hyperspace(线段树)
- 声明map对象时你不知道的事
- BaseAdapter优化------文艺式
- Samba的简介和配置
- Viewpager
- hdu 4667 Building Fence(几何)
- ping相关
- POJ 3070 Fibonacci (矩阵快速幂求fibonacci)
- 用Github托管你的代码
- 网络体系结构
- SLF4j用户手册