自定义适配器应用
2014-09-16 23:01
106 查看
package com.jky.customadapter;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Color;
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.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv;
private List<User> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) findViewById(R.id.lv);
//数据集合
data = new ArrayList<User>();
data.add(new User(R.drawable.face1, "刘备", "13567899876"));
data.add(new User(R.drawable.face2, "张飞", "13567899876"));
data.add(new User(R.drawable.face3, "关羽", "13567899876"));
data.add(new User(R.drawable.face4, "曹操", "13567899876"));
data.add(new User(R.drawable.face5, "孙权", "13567899876"));
data.add(new User(R.drawable.face6, "赵云", "13567899876"));
//绑定适配器到ListView上
MyAdapter adapter = new MyAdapter();
lv.setAdapter(adapter);
}
//自定义适配器
class MyAdapter extends BaseAdapter{
private LayoutInflater inflater;
public MyAdapter() {
//布局加载器
inflater = LayoutInflater.from(MainActivity.this);
}
//有多少条数据
//先问,有多少条数据要显示?
@Override
public int getCount() {
return data.size();
}
//根据position拿到对应的数据
@Override
public Object getItem(int position) {
return data.get(position);
}
//根据position拿到对应的数据的id
//没有id就返回position
@Override
public long getItemId(int position) {
return position;
}
//总共有六条记录要显示
//每显示一条,就调用getView一次
//position(0-5)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//我们要显示的条目就是item.xml中定义好的样子
//1.加载item.xml中定义的布局
//root 问layout的父亲是谁
View layout = inflater.inflate(R.layout.item, null);
//单数行为灰色,双数行为黑色
if (position % 2 == 0) {
layout.setBackgroundColor(Color.GRAY);
}else{
layout.setBackgroundColor(Color.BLACK);
}
//2.设置布局中控件的数据
//根据position的值获取对应的数据
User user = data.get(position);
//头像
ImageView iv_face = (ImageView) layout.findViewById(R.id.iv_face);
iv_face.setImageResource(user.face);
//姓名
TextView tv_name = (TextView) layout.findViewById(R.id.tv_name);
tv_name.setText(user.name);
//号码
TextView tv_number = (TextView) layout.findViewById(R.id.tv_number);
tv_number.setText(user.number);
return layout;
}
}
}
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Color;
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.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv;
private List<User> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) findViewById(R.id.lv);
//数据集合
data = new ArrayList<User>();
data.add(new User(R.drawable.face1, "刘备", "13567899876"));
data.add(new User(R.drawable.face2, "张飞", "13567899876"));
data.add(new User(R.drawable.face3, "关羽", "13567899876"));
data.add(new User(R.drawable.face4, "曹操", "13567899876"));
data.add(new User(R.drawable.face5, "孙权", "13567899876"));
data.add(new User(R.drawable.face6, "赵云", "13567899876"));
//绑定适配器到ListView上
MyAdapter adapter = new MyAdapter();
lv.setAdapter(adapter);
}
//自定义适配器
class MyAdapter extends BaseAdapter{
private LayoutInflater inflater;
public MyAdapter() {
//布局加载器
inflater = LayoutInflater.from(MainActivity.this);
}
//有多少条数据
//先问,有多少条数据要显示?
@Override
public int getCount() {
return data.size();
}
//根据position拿到对应的数据
@Override
public Object getItem(int position) {
return data.get(position);
}
//根据position拿到对应的数据的id
//没有id就返回position
@Override
public long getItemId(int position) {
return position;
}
//总共有六条记录要显示
//每显示一条,就调用getView一次
//position(0-5)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//我们要显示的条目就是item.xml中定义好的样子
//1.加载item.xml中定义的布局
//root 问layout的父亲是谁
View layout = inflater.inflate(R.layout.item, null);
//单数行为灰色,双数行为黑色
if (position % 2 == 0) {
layout.setBackgroundColor(Color.GRAY);
}else{
layout.setBackgroundColor(Color.BLACK);
}
//2.设置布局中控件的数据
//根据position的值获取对应的数据
User user = data.get(position);
//头像
ImageView iv_face = (ImageView) layout.findViewById(R.id.iv_face);
iv_face.setImageResource(user.face);
//姓名
TextView tv_name = (TextView) layout.findViewById(R.id.tv_name);
tv_name.setText(user.name);
//号码
TextView tv_number = (TextView) layout.findViewById(R.id.tv_number);
tv_number.setText(user.number);
return layout;
}
}
}
相关文章推荐
- ListView应用Demo使用自定义的适配器继承BaseAdapter
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
- .NET自定义异常的一个简单应用
- 用FASTREPORT实现WEB应用中自定义报表
- EXCEL 中自定义函数的应用(关于 XOR 在 EXCEL 中的用法 及 文本型数字求和)
- IHttpHandlerFactory 之完美应用, 自定义页面引擎
- ASP.Net中自定义Http处理及其应用(转:孙亚民)
- ASP.Net中自定义Http处理及应用之HttpModule篇
- ASP.Net中自定义Http处理及应用之HttpModule篇(转)
- 关于GridView中自定义分页、单选、多选的简单应用(原创)
- java(j2ee)应用-简单自定义标签开发全过程----之一(Inber)
- URLRewrite重写的简单应用和自定义出错页面
- 水晶报表10 中应用自定义报表名
- ASP.Net中自定义Http处理及应用之HttpModule篇
- ASP.Net中自定义Http处理及应用之HttpModule
- [导入]ASP.Net中自定义Http处理及应用之HttpModule篇
- 蛙蛙推荐:第一个实际应用中开发的自定义web服务器控件
- ASP.Net中自定义Http处理及应用之HttpModule篇
- [windows应用]解决双系统自定义词的转移