AdapterView与Adapter(一)
来源:互联网 发布:小t娱乐网源码 编辑:程序博客网 时间:2024/06/11 23:46
在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上。在Android中有这样一种高级控件,他的实现过程就类似于MVC框架。之所以称它高级,是因为他的使用不像其他控件一样,拖拽到界面上就能用,而是需要通过适配器将某些样式的数据或控件添加到其上而使用,这样的控件就是我们今天要说的AdapterView。AdapterView对象.setAdapter(Adapter对象);public
class
MainActivity
extends
Activity {
private
ListView lv;
// 适配器控件------->V视图
private
ArrayAdapter<String> adapter;
// 适配器------>C控制器
private
String[] data = {
"我是第1个列表项"
,
"我是第2个列表项"
,
"我是第3个列表项"
,
"我是第4个列表项"
,
"我是第5个列表项"
,
"我是第6个列表项"
,
"我是第7个列表项"
};
// 数据源-->M
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到ListView
lv = (ListView) findViewById(R.id.listView1);
// 实现适配器,利用系统定义的样式,加载数据源
adapter =
new
ArrayAdapter<String>(
this
,
android.R.layout.simple_list_item_1, data);
// R.layout.cell 自己定义视图
// android.R.layout.simple_list_item_1 系统定义视图样式
// 绑定适配器到适配器控件上
lv.setAdapter(adapter);
//处理单击事件:列表项被单击时给出提示信息
lv.setOnItemClickListener(
new
OnItemClickListener() {
@Override
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
Toast.makeText(MainActivity.
this
,
"第"
+ (position +
1
) +
"项被单击按下"
, Toast.LENGTH_LONG)
.show();
}
});
//处理长时间按下事件:列表项被长时间按下时给出提示信息
lv.setOnItemLongClickListener(
new
OnItemLongClickListener() {
@Override
public
boolean
onItemLongClick(AdapterView<?> parent, View view,
int
position,
long
id) {
Toast.makeText(MainActivity.
this
,
"第"
+ (position +
1
) +
"项被长时间按下"
, Toast.LENGTH_LONG)
.show();
return
true
;
}
});
}
}
public
class
MainActivity
extends
Activity {
//声明Spinner
private
Spinner sp;
//声明Adapter
private
SimpleAdapter adapter;
//数据源
private
String[] data = {
"我是第1个列表项"
,
"我是第2个列表项"
,
"我是第3个列表项"
,
"我是第4个列表项"
,
"我是第5个列表项"
,
"我是第6个列表项"
,
"我是第7个列表项"
,
"我是第8个列表项"
,
"我是第9个列表项"
};
// 数据源-->M
//存放数据源
ArrayList<Map<String, Object>> list =
new
ArrayList<Map<String, Object>>();
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到Spinner
sp = (Spinner) findViewById(R.id.spinner1);
//将数据添加到List<Map>中,因为SimpleAdapter只能装这样的数据
Map<String, Object> map;
for
(
int
i =
0
; i < data.length; i++) {
map =
new
HashMap<String, Object>();
map.put(
"data"
, data[i]);
list.add(map);
}
//实例化Adapter
adapter =
new
SimpleAdapter(
this
, list, R.layout.cell,
new
String[] {
"data"
},
new
int
[] { R.id.textView1 });
//绑定Adapter到Spinner上
sp.setAdapter(adapter);
}
}
public
class
MainActivity
extends
Activity {
//声明GridView
private
GridView gv;
//声明SimpleAdapter
private
SimpleAdapter adapter;
//数据源
private
int
imageids[] = { R.drawable.item1, R.drawable.item2,
R.drawable.item3, R.drawable.item4, R.drawable.item5,
R.drawable.item6, R.drawable.item7, R.drawable.item8,
R.drawable.item9, R.drawable.item10, R.drawable.item11,
R.drawable.item12, R.drawable.item13, R.drawable.item14,
R.drawable.item15 };
private
String data[] = {
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"10"
,
"11"
,
"12"
,
"13"
,
"14"
,
"15"
};
//存放数据
private
List<Map<String, Object>> lists;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到GridView
gv = (GridView) findViewById(R.id.gridView1);
//封装数据到List上
lists =
new
ArrayList<Map<String, Object>>();
Map<String, Object> maps;
for
(
int
i =
0
; i < imageids.length; i++) {
maps =
new
Hashtable<String, Object>();
maps.put(
"image"
, imageids[i]);
maps.put(
"data"
, data[i]);
lists.add(maps);
}
//适配数据到适配器上
adapter =
new
SimpleAdapter(
this
, lists, R.layout.cell,
new
String[] {
"image"
,
"data"
},
new
int
[] { R.id.imageView1, R.id.textView1 });
//绑定适配器到GridView上
gv.setAdapter(adapter);
}
}
//自定义Adapter
public
class
MyAdapter
extends
BaseAdapter {
//上下文
private
Context context;
//资源
private
int
imageids[];
//构造方法
public
MyAdapter(Context context,
int
imageids[]) {
this
.context = context;
this
.imageids = imageids;
}
//返回数据源长度
@Override
public
int
getCount() {
return
imageids.length;
}
//返回对应位置处的数据
@Override
public
Object getItem(
int
position) {
return
imageids[position];
}
//返回对应位置的行ID
@Override
public
long
getItemId(
int
position) {
return
position;
}
//返回列表项的显示样式视图
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
//ImageView控件
ImageView iv =
new
ImageView(context);
//添加资源到控件上
iv.setImageResource(imageids[position]);
//控件在父级控件的显示样式
iv.setLayoutParams(
new
Gallery.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
//返回视图
return
iv;
}
}
public
class
MainActivity
extends
Activity {
//声明Gallery
private
Gallery gy;
//声明自定义Adapter
private
MyAdapter adapter;
//数据源
private
int
imageids[] = { R.drawable.w1,R.drawable.q1, R.drawable.q2, R.drawable.q3,
R.drawable.q4, R.drawable.q5, R.drawable.q6, R.drawable.q7, R.drawable.q8, R.drawable.q9 };
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到Gallery
gy = (Gallery) findViewById(R.id.gy);
//实例化适配器
adapter =
new
MyAdapter(
this
, imageids);
//绑定适配器到Gallery上
gy.setAdapter(adapter);
}
}
0 0
- AdapterView与Adapter(一)
- AdapterView与Adapter(二) --CursorAdapter
- AdapterView与Adapter(五) --AsyncQueryHandler
- AdapterView 与 Adapter
- Android高级控件----AdapterView与Adapter详解(转)
- 安卓Adapter 与AdapterView笔记
- Android高级控件----AdapterView与Adapter
- Android高级控件----AdapterView与Adapter
- Android高级控件----AdapterView与Adapter详解
- Android高级控件----AdapterView与Adapter
- Android高级控件----AdapterView与Adapter
- Android高级控件----AdapterView与Adapter
- Android学习笔记(22):AdapterView与Adapter
- Android高级控件----AdapterView与Adapter
- Android高级控件----AdapterView与Adapter
- Android高级控件----AdapterView与Adapter
- Android适配器视图与适配器AdapterView & Adapter
- AdapterView(一)
- iOS隐藏UITableview下面多余的tableviewcell的线条
- log4j2使用总结
- Postman - 网页调试与发送网页HTTP请求的Chrome插件
- 用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
- Mac终端常用命令
- AdapterView与Adapter(一)
- 运行pig出错Unhandled internal error. Found interface jline.Terminal, but class was expected
- vmware使用问题汇总
- android ListView显示和隐藏二级内容
- SPSS22 高级市场分析 统计分析【原创】
- npm ERR!无法安装任何包的解决办法
- 黑马程序员——Java要点笔记——工具类Collections&Arrays
- MATLAB图像增强程序
- 最大公约数和最小公倍数