问题描述
我利用 simpleAdapter 来放置mysql资料到listview上,我如何点击此listview某个item裡面的button,就裡面的值(包含3个textview、1个button)传给另外一个activity(也是lisview接收)。以下附件是我的DEMO,要传值至twolistview.xml,请大家帮忙提供范例或代码
解决方案
我说下思路,包含两步。1,从被点击的Item中获取值。这里可以改一下,不用SimpleAdapter,用一个自定义的Adapter(继承自BaseAdapter)。自定义Adapter示例:public abstract class SpecificAdapter<E> extends BaseAdapter {protected BaseActivity activity;/** 数据源 */protected List<E> data;/** item布局文件id */protected int layoutId;/** * 构造方法 * * @param activity * @param data * @param layoutId */public SpecificAdapter(BaseActivity activity, List<E> data, int layoutId) {this.activity = activity;this.data = data;this.layoutId = layoutId;}@Overridepublic int getCount() {if (data != null) {return data.size();}return 0;}@Overridepublic E getItem(int position) {if (data != null) {return data.get(position);}return null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic abstract View getView(int position, View convertView,ViewGroup parent);}每一个Item中对应一个VO。是否可以不用按钮,直接监听OnItemClicked事件。示例代码:listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {VO item = (VO) parent.getAdapter().getItem(position);activity.skip(item.getAction(), item);}});实际上,就是从被点击的Item中获取对应的VO对象。2,跳转Activity并传值我用自己封装的方法:public void skip(Class<?> target,Serializable... serializ) {Intent intent = new Intent(target);Bundle extras = new Bundle();for (int i = 0; i < serializ.length; i++) {Serializable s = serializ[i];//放对象的规则,以顺序为键extras.putSerializable(i + "", s);}intent.putExtras(extras);startActivity(intent);}另一个Activity取出值,作为另外一个ListView的数据源即可。