这几天在写项目的时候频繁采用mvp设计模式,数据合视图的分离让代码的逻辑跟加清晰
先说Adapter中的事件监听有如下几种方式
方式1直接在Adapter中设置
holder.mItemName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
方式2可以吧Adapter在Activity或者其他的内部类代码太多
着重介绍方式3(事件监听传递到Activity中)
需求分析,需要做一个删除好友的功能,好友放在一个List中如果删除成功直接在集合中remove好友,问题的关键是如何获取好友的position。在Adapter中的getVeiw中可以得到position,
1在Adapter中书写接口
public interface DeleteFridenCallBack{
void doDelete(View view,int position);
}
2在Adapter中定义接口的实现类,改类实现删除好友的接口 最重要的是接收一个position的构造参数
private class DeleteCallBackListener implements View.OnClickListener{
private int position;
public DeleteCallBackListener(int position){
this.position=position;
}
@Override
public void onClick(View view) {
mCallBack.doDelete(view,position);
}
}
3 在Adapter中声明成员变量删除好友的接口
private DeleteFridenCallBack mCallBack;
4 Adapter中的构造方法接收一个删除好友的接口参数
5在Activty中实现改接口在设置Adapter中传入大功告成了
mListView.setAdapter(mAdapter,this);
@Override
public void doDelete(View view, int position) {
}