2种方式实现ListView中中每一项下的任意控件的点击事件

来源:互联网 发布:济南用友软件代理商 编辑:程序博客网 时间:2024/06/05 06:57


首先给出布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"    android:descendantFocusability="blocksDescendants" >        <TextView        android:id="@+id/name"        android:layout_width="0dp"        android:layout_height="40dp"        android:singleLine="true"        android:ellipsize="middle"        android:gravity="center"        android:layout_weight="2"/>    <Button        android:id="@+id/delete"        android:layout_width="0dp"        android:layout_height="40dp"        android:text="删除"        android:gravity="center"        android:layout_weight="1"/></LinearLayout>

实现方式1:

①在Button中添加android:onClick="delete"//delete是任意定义的点击事件函数,具体在java代码中实现。

②在使用此item的java代码中实现delete函数,如下:

public void delete(View v) {if (v.getId() == R.id.delete) {String str = "确定删除吗?";String title = "删除提示框";new AlertDialog.Builder(this).setTitle(title).setMessage(str).setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "删除一条记录", Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", null).show();}}


实现方式2:

在ListView的自定义适配器中添加对应的点击事件,代码如下:

public class MySimpleAdapter extends BaseAdapter {private LayoutInflater mInflater;private List<Map<String, Object>> list;private int layoutID;private String flag[];private int ItemIDs[];public MySimpleAdapter(Context context, List<Map<String, Object>> list,int layoutID, String flag[], int ItemIDs[]) {this.mInflater = LayoutInflater.from(context);this.list = list;this.layoutID = layoutID;this.flag = flag;this.ItemIDs = ItemIDs;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int arg0) {return 0;}@Overridepublic long getItemId(int arg0) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = mInflater.inflate(layoutID, null);// 设置TextView的代码省略addListener(convertView);return convertView;}public void addListener(View convertView) {((Button)convertView.findViewById(R.id.btn)).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new AlertDialog.Builder(MainActivity.ma).setTitle("自定义通用SimpleAdapter").setMessage("删除!").show();}});}}
备注:方式2的具体实现可参见链接:http://blog.csdn.net/xiaominghimi/article/details/6314704



0 0