观察者模式(设置回调接口)
来源:互联网 发布:折弯机编程视频 编辑:程序博客网 时间:2024/05/16 09:22
知识点:
关键字interface的使用
观察者模式思想
运行效果:
代码:
public class MainActivity extends Activity { private ListView mListView; private MyAdapter mAdapter; private List<String> mList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView= (ListView) findViewById(R.id.mListView); mList=new ArrayList<>(); mAdapter=new MyAdapter(mList,this); for (int i = 0; i <8 ; i++) { mList.add("我是第"+i+"个Button"); } mListView.setAdapter(mAdapter); mAdapter.MyOnClickListener(new MyAdapter.MyButtonClickListener() { @Override public void Listener(View mView, int i) { Toast.makeText(MainActivity.this,"你点击了第"+i+"个Button",Toast.LENGTH_SHORT).show(); } }); }}
public class MyAdapter extends BaseAdapter { private Context mContext; private List<String> mList; private MyButtonClickListener mListener; public MyAdapter( List<String> pList,Context pContext) { mContext=pContext; mList=pList; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int i) { return mList.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder mHolder; final int flag=i; if(view==null){ mHolder=new ViewHolder(); view= LayoutInflater.from(mContext).inflate(R.layout.listview_item,null); mHolder.button= (Button) view.findViewById(R.id.btButton); view.setTag(mHolder); }else { mHolder= (ViewHolder) view.getTag(); } mHolder.button.setText(mList.get(i)); mHolder.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mListener.Listener(view,flag); } }); return view; } private class ViewHolder{ Button button; } interface MyButtonClickListener{ void Listener(View mView,int i); } public void MyOnClickListener(MyButtonClickListener Listener){ mListener=Listener; }}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/mListView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="6dp" android:layout_marginLeft="6dp" android:layout_marginRight="6dp" android:layout_marginTop="6dp" /></LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="#000" android:orientation="vertical"> <Button android:id="@+id/btButton" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_gravity="center" android:text="我是按钮" /></LinearLayout>
为什么要这样写?
1、在Adapter类中直接设置Button的点击事件也是可以的
2、但是如果Button的点击事件需要操作Activity界面内容时,就需要把,
ListView中Button的点击事件编写在Activity中
0 0
- 观察者模式(设置回调接口)
- Java 观察者模式(类似于用接口实现回调)
- 接口回调与观察者模式
- java 中的观察者模式实现之接口回调
- Rxjava前篇(一):观察者模式之接口回调
- java 接口 观察者模式
- Observer接口实现观察者模式
- 观察者模式接口传值
- 接口和自定义观察者模式
- 设置模式(1)——观察者模式
- 接口回调,观察者模式,消息机制3者的区别
- 回调与观察者模式
- 观察者模式与回调
- 观察者设计模式(Observable 类Observer接口的使用)
- 观察者模式(基于Observable 类和Observer 接口)
- 观察者设计模式( Observable类Observer接口)
- 《GOF设计模式》—观察者(OBSERVER)—Delphi源码示例:观察者接口
- 从抽象谈起(二):观察者模式与回调
- 不通过中间变量就可以交换两个变量的值
- WSGI 简介
- 排序总结系列四:希尔排序
- linux(2)——2016.10.6
- 链接器脚本
- 观察者模式(设置回调接口)
- 【J2EE核心开发学习笔记 007】 Cookie Session会话管理
- Keep On Movin
- linux内存管理之slab机制
- codeforces723B Text Document Analysis
- 常见WEB应用攻击影响分析
- CSS实现背景图片的左右晃动
- Reset CSS
- Redis全教程