在适配器中点击监听给activity中的控件赋值,采用接口回调的方式
2017-05-19 10:58
330 查看
我们大家在做项目的时候,时常会遇到在adapter中操作activity中的控件
或者在activity中想操作adapter中的控件这种情况,下面用接口回调来实现此功能。
首先在adapter中定义接口,调用监听方法
下面是activity中的代码
这样就实现了在activity中调用adapter控件监听的方法,实现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之间的通信。
相关文章推荐
- mvp 适配器里面接口回调 适配器定义接口 activity实现
- [读书笔记]监听事件的四种方式原理分析(接口回调)与比较
- 在适配器Adapter中回调他的点击事件到activity或者fragment当中
- ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法
- Android中Service与Activity的通信---回调接口方式
- 接口回调----点击item中的ImageView,在Activity中显示dialog
- RecyclerView的基本用法 (一个控件实现ListView, GridView等效果)+接口回调点击事件
- 圆头像控件,自动监听点击跳转到Activity
- 自定义点击事件OnClickListener内部监听外部回调adapter内的点击事件移到Activity
- Android中Recyclerview使用7----条目中按钮点击事件,在activity中调用(接口回调)
- 组合控件,点击接口回调到阶梯矩阵页面,点击按钮进度条100%到扫描二维码页面,
- Android 监听按钮点击事件的三种方式(1:匿名内部类;2:外部类;3:接口方式)
- ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法
- android自定义接口,然后在activity中实现点击监听,调用getView解决滑动错位的问题
- Fragment 的静态方式和动态方式以及动态方式中fragment之间通过activity传递 数据(接口回调 ):
- C# 采用系统委托的方式处理线程内操作窗体控件
- android使用接口回调把fragment把值传回到Activity
- ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听.
- 【Android】关于在Service中通过接口回调更新Activity的UI
- JQuery为用户控件(ASCX)赋值与接口的应用