相信大家对MVC模式并不陌生,那对于Adapter来说,对应为:
m:model(数据模型)--------数据源
v:view(显示的视图控件)--------AdapterView
c:controller(控制器)--------adapter
MVC设计模式的特点:将前端显示和后端数据相互分离。
ListView:
Item的点击事件:setOnItemClickListener(listener)
代码实现:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//第一个参数parent:适配器设置到的adapterView对象,在这里表示的就是ListView。
//第二个参数view:适配器item对应的view。
//第三个参数position:索引位置
//第四个参数id:在listView中的item所对应的行id。
//position从0开始,向下依次增加。
Toast.makeText(MainActivity.this,"点击的是索引:" + position + "id为:" + id,Toast.LENGTH_SHORT).show();
}
});
Item的长按事件:setOnItemLongClickListener(listener)【在此处示例实现Item长按删除的效果】
代码实现:
//Item的长按删除的效果。
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//删除对应的item索引
list.remove(position);
//如果适配器发生变化,需要当前的listView也通知到。
//对适配器重新进行初始化操作。
//最简单的方法,不提倡。
// adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.array_adapter_item,list);
// lv.setAdapter(adapter);
adapter.notifyDataSetChanged();//涉及到观察者模式
return true;
}
});
大家可以看出,可以通过两个方法来实现删除的操作:
方法一:对适配器重新进行初始化操作
adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.array_adapter_item,list);
lv.setAdapter(adapter);
方法二:直接点用adapter的notifyDataSetChanged()方法。
adapter.notifyDataSetChanged();//涉及到观察者模式