使用Activity和Delegate与Adapter交互
来源:互联网 发布:unity3d 5.0 编辑:程序博客网 时间:2024/05/17 03:22
通过委托模式(Delegation Pattern)可以帮助我们把所有业务逻辑从Adapter中移动到Activity。
我们创建一个sample,通过该project可以向列表中添加电话号码,列表中每一行都有一个remove按钮,用于删除电话号码。
思路:在适配器中实现“remove”按钮的点击处理,但是并不在适配器中实现删除对象的方法。我们通过一个委托接口调用Activity的方法删除对象。
public class NumberAdapter extends ArrayAdapter<Integer>{ public static final NumberAdapterDelegate{ void removeItem(Integer value); } private LayoutInflater mInflater; private NumberAdapterDelegate mDelegate; public NumberAdapter(Context context,List<Integer> objects){ super(context,0,objects); mInflater = LayoutInflater.from(context); } @override public View getView(intposition,View cv,ViewGroup parent){ if(null == cv){ cv = mInflater.inflater(R.layout.number_row,parent,false); } final Integer value = getItem(position); TextView tv = (TextView)cv.findViewById(R.id.numbers_row_text); tv.setText(value.toString()); View delBtn = cv.findViewById(R.id.numbers_row_del); delBtn.setOnClickListener(new OnClickListener(){ @override public void onClick(View v){ if(null!=mDelegate){ mDelegate.removeItem(value); } } }); return cv; } public void setDelegate(NumberAdapterDelegate delegate){ this.mDelegate = delegate; }}
定义委托接口,用于删除的操作,公开一个设置委托接口的方法;
最后在Activity中就可以轻易使用:
public class MainActivity extends Activity implements NumberAdapterDelegate{ private ListView listView; private ArrayList<Integer> mNumbers; private NumberAdapter mAdapter; @override public void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.main); // TODO initView initData.... } @override public void onResume(){ super.onResume(); mAdapter.setDelegate(this); } @override public void onPause(){ super.onPause(); mAdapter.setDelegate(null); } @override public void removeItem(Integer value){ mNumbers.remove(value); mAdapter.notifyDataSetChanged(); }}
我们并没有在onCreate方法中注册代理对象,而是在onResume方法中注册代理对象,在onPause方法中取消注册。这样做的目的是为了确保只在Activity显示的时候才作为委托对象使用。
0 0
- 使用Activity和Delegate与Adapter交互
- 使用Activity和Delegate与适配器交互
- Android开发adapter与Activity交互
- Android Activity和Adapter通过接口交互
- Unity中使用Delegate和Native交互
- Adapter与Activity通过接口回调进行交互
- Fragment与Activity交互方式使用Handler
- Fragment与Activity交互方式使用Bundle
- Activity与Service交互
- Fragment与Activity交互
- Fragment 与 Activity交互
- Activity与Fragment交互
- Fragment与Activity交互
- Notification和Activity交互
- Activity和Service交互
- Activity和Fragment交互
- Fragment和Activity交互
- Activity和Fragment交互
- STM32F407IG多通道ADC-DMA采样
- 玻璃手机不仅是产品 更是一种信念
- JAVA 自己写的JDBC数据库工具类,并作相关的测试DBUtil
- C/C++动态内存分配之用malloc和指针实现动态数组排序
- 安卓手机很快也要普及3D Touch了
- 使用Activity和Delegate与Adapter交互
- 《深入理解Linux网络技术内幕》阅读笔记(十九)
- 安卓病毒频发,做好手机安全防护很有必要
- STM32F407IG开启FPU,做开方运算
- 八皇后
- 浅谈计算机中的存储模型(一)存储体系
- 欢迎使用CSDN-markdown编辑器
- UITextView自适应高度
- 开通自己的博客啦