Unable to get Listview to refresh from Database

前端 未结 2 731
予麋鹿
予麋鹿 2020-12-18 14:39

No matter what I seem to try and do regarding this listview and trying to get it to dynamically update whenever I hit a button it doesn\'t work and always throws a NPE.

2条回答
  •  半阙折子戏
    2020-12-18 14:59

        import android.app.ListActivity;
        import android.content.ContentValues;
        import android.content.Context;
        import android.database.Cursor;
        import android.database.sqlite.SQLiteDatabase;
        import android.os.Bundle;
        import android.view.View;
        import android.view.View.OnClickListener;
        import android.widget.Button;
        import android.widget.EditText;
        import android.widget.SimpleCursorAdapter;
        import android.widget.Toast;
    
        public class pills extends ListActivity {
    
        public static final String C_MED_NAME = "med_name";
        public SimpleCursorAdapter ladapter;
        Context context;
        Cursor cur;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.pills);
            context=this;
            try {
    
                    DatabaseHelper DBHelper= new DatabaseHelper(this);
                    SQLiteDatabase db = DBHelper.getReadableDatabase();
    
    
                    cur = db.query("Medicines", null, null, null, null, null, null);
                    startManagingCursor(cur);
    
                    String [] columns = new String[] {C_MED_NAME};
                    int [] to = new int[] {R.id.meditem};
    
                    ladapter = new SimpleCursorAdapter(this, R.layout.meditem, cur, columns, to);
    
                    this.setListAdapter(ladapter);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
    
    
            Button saveMed = (Button) findViewById(R.id.pills_newmedsubmit);
            saveMed.setOnClickListener(new OnClickListener() {
    
    
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    final EditText newMed = (EditText) findViewById(R.id.pills_newmedtxtbox);
    
                    if (newMed.getText().toString().equals("")) {
    
        //                    Context context = getApplicationContext();
                            CharSequence text = "Please type the name of a new prescription item.";
                            int duration = Toast.LENGTH_SHORT;
    
                            Toast toast= Toast.makeText(context, text, duration);
                            toast.show();
                    }
                    else
                    {
    
                            String medName = newMed.getText().toString();
    
                            insertNewPrescriptionItem(medName);
    
                            EditText clearTextBox = (EditText) findViewById(R.id.pills_newmedtxtbox);
                            clearTextBox.setText("");
    
        //                  Context context = getApplicationContext();
                            CharSequence text = "Saved";
                            int duration = Toast.LENGTH_SHORT;
    
                            Toast toast = Toast.makeText(context, text, duration);
                            toast.show();
    
    
                    }
    
                refresh();
    
                }
    
    
            });}
    
            private void insertNewPrescriptionItem (String medName){
    
                DatabaseHelper DbHelper = new DatabaseHelper(this);
    
                SQLiteDatabase db = DbHelper.getWritableDatabase();
    
                ContentValues cv = new ContentValues();
    
                    cv.put(DatabaseHelper.C_MED_NAME, medName);
    
                    db.insert(DatabaseHelper.TABLE_NAME, DatabaseHelper.C_MED_NAME, cv);
                    db.close();
                    }
    
    
        }
    public void refresh(){
    cur = db.query("Medicines", null, null, null, null, null, null);
    ladapter.notifyDataSetChanged();
    }
    

    try this, i think your context is null thats why it is happening so

提交回复
热议问题