Adapter(二)——ListView的点击和长按事件

相信大家对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(MainActivity.this,R.layout.array_adapter_item,list);
//                lv.setAdapter(adapter);
                adapter.notifyDataSetChanged();//涉及到观察者模式
                return true;
            }
        });

 

大家可以看出,可以通过两个方法来实现删除的操作:

方法一:对适配器重新进行初始化操作

adapter = new ArrayAdapter(MainActivity.this,R.layout.array_adapter_item,list);
lv.setAdapter(adapter);

方法二:直接点用adapter的notifyDataSetChanged()方法。

 

adapter.notifyDataSetChanged();//涉及到观察者模式

 

你可能感兴趣的:(Android基础)