从sqlite的onListItemClick NullPointerException异常 [英] from sqlite onListItemClick NullPointerException
本文介绍了从sqlite的onListItemClick NullPointerException异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想编辑功能添加到我的数据库,读取和写入的功能完美的工作。第一步我想,是为了显示记录从我的列表视图中的另一个布局点击(我使用相同的布局添加新记录)
在show_activity我有这个code
I'm trying to add edit function to my database, read and write function working perfectly. First step i want, is to show record clicked from my listview in another layout (the same layout I use for add new record) in show_activity I've this code
show_activity
///ON CREATE
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
datasource = new DBAdapter(this);
datasource.open();
Cursor cursor = datasource.Query(filter);
String[] columns = new String[] { "swimm_pos", "swimm_date","swimm_lap", "swimm_stroke", "swimm_time", "swimm_media", "swimm_efficiency", "swimm_note" };
int[] to = new int[] { R.id.swimm_pos, R.id.swimm_date, R.id.swimm_lap, R.id.swimm_stroke, R.id.swimm_time, R.id.swimm_medialap, R.id.swimm_efficiency, R.id.swimm_note};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this,
R.layout.list_layout,
cursor,
columns,
to);
this.setListAdapter(adapter);
datasource.close();
'''''
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = new Intent("com.poolper.Edit_Activity");
Cursor cursor = (Cursor) adapter.getItem(position);
intent.putExtra("idContacto",cursor.getInt(cursor.getColumnIndex("_id")));
startActivity(intent);
}
这是从我的编辑活动提取物
this is extract from my Edit Activity
public class Edit_Activity extends Activity {
int idContacto;
DBAdapter datasource;
GetSet details;
EditText edtSwimm_pos;
.....
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_layout);
edtSwimm_pos = (EditText) findViewById(R.modificacontatto.edswimm_date);
......
LoadDetails();
...
private void LoadDetails(){
idContacto = getIntent().getIntExtra("idContacto", 0);
datasource = new DBAdapter(this);
datasource.open();
details = datasource.getContacto(idContacto);
datasource.close();
edtSwimm_pos.setText(contacto.getswimm_pos());
.....
和从我DBAdapter
and from my DBAdapter
public class DBAdapter {
private SQLiteDatabase database;
private DBHelper DBHelper;
private String[] allColumns = {
DBHelper.ID,
DBHelper.SWIMM_POS,
DBHelper.SWIMM_DATE,
DBHelper.SWIMM_LAP,
DBHelper.SWIMM_STROKE,
DBHelper.SWIMM_TIME,
DBHelper.SWIMM_MEDIA,
DBHelper.SWIMM_EFFICIENCY,
DBHelper.SWIMM_NOTE
};
....
private GetSet cursorToContacto(Cursor cursor) {
GetSet contacto = new GetSet(cursor.getLong(0),cursor.getString(1),cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8));
return contacto;
}
public GetSet getContacto (int idContacto){
Cursor cursor = database.query(DBHelper.TABLE_NAME, allColumns, DBHelper.ID + " = " + idContacto, null,null, null, null);
cursor.moveToFirst();
return cursorToContacto(cursor);
}
和这个GETSET类
public class GetSet {
private long _id;
private String swimm_pos;
private String swimm_media;
private String swimm_note;
private String swimm_date;
private String swimm_lap;
private String swimm_stroke;
private String swimm_time;
private String swimm_efficiency;
public GetSet(long id, String swimm_pos, String swimm_date, String swimm_lap,String swimm_stroke, String swimm_time, String swimm_media, String swimm_efficiency, String swimm_note){
this._id=id;
this.swimm_pos=swimm_pos;
this.swimm_date=swimm_date;
this.swimm_lap=swimm_lap;
this.swimm_stroke=swimm_stroke;
this.swimm_media=swimm_media;
this.swimm_time=swimm_time;
this.swimm_efficiency=swimm_efficiency;
this.swimm_note=swimm_note;
}
public long getId() {
return _id;
}
public void setId(long id) {
this._id = id;
}
public String getswimm_pos() {
return swimm_pos;
}
public void setswimm_pos(String swimm_pos) {
this.swimm_pos = swimm_pos;
}
但是,当我记录调试点击此行显示NullPointException
光标光标=(光标)adapter.getItem(位置)
But when i click on record debug show the NullPointException at this line Cursor cursor = (Cursor) adapter.getItem(position)
推荐答案
更改code为:
protected void onListItemClick(ListView l, View v, int position, long id) {
Cursor cursor = ((SimpleCursorAdapter)l.getAdapter()).getCursor();
cursor.moveToPosition(position);
Intent intent = new Intent(Current_Activity.this,Edit_Activity.class);
intent.putExtra("idContacto",cursor.getInt(cursor.getColumnIndex("_id")));
startActivity(intent);
}
这篇关于从sqlite的onListItemClick NullPointerException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文