我想实现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) {
//
// }}
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) {
//
// }}
解决方案 »
- txt文件如何封入APK??
- 我在google play上发应用,2小时过去了怎么还是搜不到啊
- 怎样实现 当启动主线程以后 在主线程里面有一个判断,如果判断成功的话就让其自动开启令一个主线程,同时当前主线程还在运行,用户依然可以对当前线程操作
- android上 如何增加相应的语言包呢?
- android外部扩展库的移植方法
- 关于android环境配置需要求助
- TabWidget自定义背景图片
- 5OG!!黑马程序员27期全套Android视频开送了!!!!
- Android中计算点击焦点区域的问题,大神路过帮助一把吧!
- ONVIF协议局域网之外该如何使用?
- 急!Android POST图片问题,网上的资料都参考过了都不行
- 两难问题
方式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
先解决不能点击button的问题,然后就可以还实现普通ImageButton那样增加单机事件处理就ok了
我现在自己写了个adapter,也可以监听到事件,可是这个类没有继承activity,我想点击按钮删除数据,而这个数据放在之前的activity里,请问如何在非activity里调用activity的方法,我自己试了几次都是报异常: java.lang.NullPointerException请问有什么好的解决方法,最好付上代码