从sqlite的onListItemClick NullPointerException异常 [英] from sqlite onListItemClick NullPointerException

查看:106
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆