在适配器中点击监听给activity中的控件赋值,采用接口回调的方式
来源:互联网 发布:java线程的优先级 编辑:程序博客网 时间:2024/06/04 22:54
我们大家在做项目的时候,时常会遇到在adapter中操作activity中的控件
或者在activity中想操作adapter中的控件这种情况,下面用接口回调来实现此功能。
首先在adapter中定义接口,调用监听方法
private static final String TAG = ListViewDemoAdapter.class.getSimpleName(); /** * 上下文 */ private Context mContext; /** * LayoutInflater */ private LayoutInflater mInflater; private List<String> datas; public ListViewDemoAdapter(Context context,List<String> list){ this.mContext = context; this.datas = list; this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { return datas.size(); } @Override public String getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null){ holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.listitem,null); holder.tv_name = (TextView) convertView.findViewById(R.id.tv_name); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.tv_name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG,"setOnClickListener-->onClick..."); //回调传递点击的view if(mItemOnClickListener!=null){ mItemOnClickListener.itemOnClickListener(v); } } }); return convertView; } private ItemOnClickListener mItemOnClickListener; public void setmItemOnClickListener(ItemOnClickListener listener){ Log.d(TAG,"setmItemOnClickListener..."); this.mItemOnClickListener = listener; } public interface ItemOnClickListener{ /** * 传递点击的view * @param view */ public void itemOnClickListener(View view); } public class ViewHolder{ public TextView tv_name; }
下面是activity中的代码
public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName(); /** * listview */ private ListView mLvDemo; private List<String> list = new ArrayList<String>(); private ListViewDemoAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化view initView(); //初始化数据 initData(); } /** * 初始化view * @author crystal * @date 2015-9-4 22:24 */ private void initView(){ //初始化listview mLvDemo = (ListView) findViewById(R.id.lv_demo); mAdapter = new ListViewDemoAdapter(MainActivity.this,list); mLvDemo.setAdapter(mAdapter); //获取点击的view子控件 mAdapter.setmItemOnClickListener(new ListViewDemoAdapter.ItemOnClickListener() { /** * 点击的view子控件 * @param view view子控件 */ @Override public void itemOnClickListener(View view) { Log.d(TAG, "itemOnClickListener view..."); TextView tvName = (TextView)view; //提示点击的子控件的文本 Toast.makeText(MainActivity.this,tvName.getText().toString(),Toast.LENGTH_LONG).show(); } }); } /** * 初始化数据 * @author crystal * @date 2015-9-4 22:51 */ private void initData(){ list.add("crystal"); list.add("jack"); list.add("tom"); list.add("rose"); list.add("lora"); list.add("tony"); mAdapter.notifyDataSetChanged(); //更新数据 } }
这样就实现了在activity中调用adapter控件监听的方法,实现adapter与activity之间的通信。
阅读全文
0 0
- 在适配器中点击监听给activity中的控件赋值,采用接口回调的方式
- 接口回调----点击item中的ImageView,在Activity中显示dialog
- Dev控件中的LookUpEdit控件在代码编辑器中给EditValue赋值无效的解决办法。
- 在网页中通过param name方式给ActiveX控件的属性赋值
- android自定义接口,然后在activity中实现点击监听,调用getView解决滑动错位的问题
- 在页面中监听用户控件的按钮点击事件
- 在activity中加载fragment的两个方式以及获取fragment中的控件的方式
- 通过接口回调方式来设置RecyclerView的条目点击监听事件
- ViewPager中控件的点击事件监听
- spring中给属性赋值的方式
- 在js循环中如何给a标签的点击事件的方法参数赋值有效
- 动态给已知ID的控件中的控件赋值
- 适配器中的 -- 接口回调
- ASP.NET (C#)动态在CS代码中给页面增加用户控件并给用户控件的属性赋值
- Android中Recyclerview使用7----条目中按钮点击事件,在activity中调用(接口回调)
- c#如何在线程给中控件赋值
- 在线程中使用委托给服务器控件赋值
- C# winform在线程中给控件赋值
- 关于如何更改frame坐标的问题
- 如何使用Masonry设计复合型cell
- 手动清除memcached里面的缓存方法
- 机器学习公式推导-Γ函数的推导
- 一步一步kmeans算法研究--numpy及matplotlib原始数据读取与展示
- 在适配器中点击监听给activity中的控件赋值,采用接口回调的方式
- codeblocks-16.01mingw-setup安装仍然cant find compiler executable for GNU GCC Compiler
- 进程间通信方式——消息队列
- AMQ 虚拟topic
- 盒子模型【基础必备】
- IT人的算法书单:挖掘程序的灵魂
- Spring思维导图,让spring不再难懂(一)
- Android4.1.1_r1系统移植------TP移植篇
- 安卓案例——网络图片浏览器