我想实现listview里面有2个ImageButton,一个是修改,一个是删除,但是如何获取这2个ImageButton的单机事件,请个位大侠帮忙看看
java代码:package android.activity;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.activity.R;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.sqlite.SqliteDBA;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
import android.widget.Toast;public class BrowseTB extends Activity { private List<Map<String, Object>> data;
Map<String, Object> item; SqliteDBA dbHelper = null;
SQLiteDatabase db = null; String tablename = SqliteDBA.DataBase_NAME; String columns[] = { "ID", "USERNAME", "PASSWORD" }; ImageButton delete, update; ListView myListView; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview); OpenDb();
this.setTitle("查询结果..."); delete = (ImageButton) findViewById(R.id.delete);
update = (ImageButton) findViewById(R.id.update); // 生成ListView对象
myListView = (ListView) findViewById(R.id.list);  List<Map<String, Object>> myList ;  myList = browse();
 if(myList!=null){
 SimpleAdapter adapter = new SimpleAdapter(this,myList,
R.layout.browse, new String[] { "ID", "USERNAME", "PASSWORD" },
new int[] { R.id.ID, R.id.USERNAME, R.id.PASSWORD });
myListView.setAdapter(adapter);
 
 }


myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
System.out.println("onclick onclick");

Toast.makeText(getApplicationContext(), "您点击的是:" + ((TextView) view).getText(), Toast.LENGTH_SHORT)
.show(); final int _id = (Integer) data.get(position).get("ID");
switch (view.getId()) {
case R.id.delete:
System.out.println(_id);
break; case R.id.update:
break;
} }
});
} // 打开数据库
public void OpenDb() {
dbHelper = new SqliteDBA(this, SqliteDBA.DataBase_NAME);
db = dbHelper.getWritableDatabase();
} public List<Map<String, Object>> browse() {
db = dbHelper.getWritableDatabase();
Cursor c = db.query(tablename, columns, null, null, null, null, null);
data = new ArrayList<Map<String, Object>>();
item = new HashMap<String, Object>();
item.put("ID", "ID");
item.put("USERNAME", "用户名");
item.put("PASSWORD", "密码");
data.add(item);
while (c.moveToNext()) {
item = new HashMap<String, Object>();
item.put("ID", c.getInt(0));
item.put("USERNAME", c.getString(1));
item.put("PASSWORD", c.getString(2));
data.add(item); }
db.close();
c.close();
return data;
} // 删除数据
// public void delete(int id) {
//
// }}

解决方案 »

  1.   

    在getView()时 给按钮添加事件就可以了
      

  2.   

    android响应事件的三种方式 
    方式1 采用匿名内部类方法   button1.setOnClickListener(new View.OnClickListener()
       {
         @Override
         public void onClick(View arg0) {
              System.out.println("button1 clicked");
            }
       });  方式2 采用activity实现OnClickListener接口
         public class TaskActivity extends Activity implements ClickListener    {          public void onClick(View arg0)        {                 if(arg0==button1)
                System.out.println("button1 clicked");
                           else if (arg0==button2)                               System.out.println("button2 clicked");                      ... 
                       }    }
     方式3  修改XML android:onClick 属性   
      <Button     android:layout_height="wrap_content"     android:layout_width="wrap_content"     android:text="@string/self_destruct"     android:onClick="selfDestruct" />     Now, when a user clicks the button, the Android system calls the activity's selfDestruct(View) method. In order for this to work, the method must be public and accept a View as its only parameter. For example: 
       public void selfDestruct(View arg0) {       System.out.println("button1 clicked");
       }http://blog.csdn.net/fontlose/archive/2011/04/21/6339194.aspx
      

  3.   

    ListView与Button的共存问题解决
    先解决不能点击button的问题,然后就可以还实现普通ImageButton那样增加单机事件处理就ok了
      

  4.   

    得自己写一个adapter,重写getview()方法,在getview()中设置button的点击事件
      

  5.   


    我现在自己写了个adapter,也可以监听到事件,可是这个类没有继承activity,我想点击按钮删除数据,而这个数据放在之前的activity里,请问如何在非activity里调用activity的方法,我自己试了几次都是报异常: java.lang.NullPointerException请问有什么好的解决方法,最好付上代码