有时需要在activity中直接获取listview中每一项(item)的子控件,这个时候我可以使用接口来与activity通信,将子控件作为参数传递过来。代码如下:

ListViewDemoAdapter 适配器代码:


private static final String TAG = ListViewDemoAdapter.class.getSimpleName();    /**     * 上下文     */    private Context mContext;    /**     * LayoutInflater     */    private LayoutInflater mInflater;    private List datas;    public ListViewDemoAdapter(Context context,List 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                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;    }



MainActivity 代码:


public class MainActivity extends AppCompatActivity {    private static final String TAG = MainActivity.class.getSimpleName();    /**     * listview     */    private ListView mLvDemo;    private List list = new ArrayList();    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(); //更新数据    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

activity_main.xml   :


        


listitem.xml   :


<?xml version="1.0" encoding="utf-8"?>    

输出日志:

09-05 10:30:07.412    9088-9088/? D/ListViewDemoAdapter﹕ setmItemOnClickListener...
09-05 10:30:49.687    9088-9088/? D/ListViewDemoAdapter﹕ setOnClickListener-->onClick...



09-05 10:30:49.697    9088-9088/? D/MainActivity﹕ itemOnClickListener view...


源码

更多相关文章

  1. Android(安卓)AlertDialog的各种用法总结
  2. 更改Android(安卓)AppCompatRadioButton控件的样式和颜色
  3. Android(安卓)Studio 开关控件Switch使用
  4. 理解Android(安卓)Context
  5. 控件显示和隐藏
  6. Android(安卓)的 Relative Layout 常量
  7. 查看Android(安卓)ADT Plugin版本的方法
  8. Android(安卓)自定义感光器控件SolarProgressView,也可当做普通Pr
  9. GitHub上优秀Android(安卓)UI Library

随机推荐

  1. 关于Android中传递数据的一些讨论
  2. Android NDK 开发教程一:安装NDK
  3. 基本架构
  4. [Google Android] Creating Your Own Spe
  5. Android(安卓)Data Binding 技术
  6. Android 编译错误::app:transformClasses
  7. OpenCV在Android平台上的应用
  8. Android外派(安卓外派) — 长年提供安卓开
  9. android 用到的技巧集
  10. Android lint 删除无用图片文件和配置文