0

I have code:

public class TesterActivity extends Activity {
public Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // just for this example:
    // create database table with an id field and a text field and add some data
    class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "someDB", null, 2);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE someTable (someIDF INTEGER, someTextF TEXT)");
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS someTable");
            onCreate(db);
            db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (54, 'Some text')");
            db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (99, 'Some more text')");
            db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (173, 'Even more text')");
        }
    }
    SQLiteDatabase db = new MyDBHelper(this).getWritableDatabase();

    // get a cursor from the database with an "_id" field
    Cursor c = db.rawQuery("SELECT someIDF AS _id, someTextF FROM someTable", null);

    // make an adapter from the cursor
    String[] from = new String[] {"someTextF"};
    int[] to = new int[] {android.R.id.text1};
    SimpleCursorAdapter sca = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, from, to);

    // set layout for activated adapter
    sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    // get xml file spinner and set adapter 
    Spinner spin = (Spinner) this.findViewById(R.id.spinner1);
    spin.setAdapter(sca);

    // set spinner listener to display the selected item id
    mContext = this;
    spin.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
            Toast.makeText(mContext, "Selected ID=" + id, Toast.LENGTH_LONG).show();
        }
        public void onNothingSelected(AdapterView<?> parent) {}
        });
    }
}

from: Populating Spinner From SQLite Database Android

I would like add for this empty value, so i make:

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS someTable");
        onCreate(db);
        db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (54, ' ')");
        db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (54, 'Some text')");
        db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (99, 'Some more text')");
        db.execSQL("INSERT INTO someTable (someIDF, someTextF) VALUES (173, 'Even more text')");
    }

This showing me empty value in spinner, but if i want get this spinner by

TextView textView = (TextView)spinner.getSelectedView();
String result = textView.getText().toString();

i have error:

java.lang.NullPointerException

This error is always - also if i selected non empty item.

Why? I can use other way for add empty value, but what?

Community
  • 1
  • 1
darlik
  • 245
  • 1
  • 2
  • 9

1 Answers1

1

first I couldn't see if you define your textview on your activity onCreate method ((TextView) findbyid(R.id.etc..)) or not ? If that one is ok then,

on your spin.setOnItemSelectedListener, you can use :

String result = parent.getItemAtPosition(position).toString();

result should be " " .

Ozan
  • 1,191
  • 2
  • 16
  • 31