Ok,
per cominciare, nella classe Risultati, inzia a dichiarare arrayAdapter non nel metodo onCreate() ma all'esterno del metodo, in modo da renderlo un attributo di quella classe.
Ovvero da così:
codice:
...
public class Risultati extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context tmpContext=getApplicationContext();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this, R.layout.listitem, R.id.listItemTextView
);
ListView listView = (ListView)findViewById(R.id.miaLista);
...
a così:
codice:
...
public class Risultati extends Activity {
private ArrayAdapter<String> arrayAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context tmpContext=getApplicationContext();
arrayAdapter = new ArrayAdapter<String>(
this, R.layout.listitem, R.id.listItemTextView
);
ListView listView = (ListView)findViewById(R.id.miaLista);
...
inoltre... alla creazione di arrayAdapter con costruttore new, non è definita la sorgente da adattare... che -secondo dichiarazione- deve essere un array di Stringhe.
Ho di recente usato un ArrayAdapter<String> per popolare una Spinner (menu a tendina di Android).
Eseguo una .rawQuery sul db sqlite che da un Cursor mi crea un vettore di Stringhe.
Sulla documentazione ufficiale della classe ArrayAdapter è indicato che il costruttore di questa classe prevede quattro parametri:
codice:
ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
ho guardato il codice che hai postato in tutta fretta, ma non vedo a che altezza del codice assegni al tuo arrayAdapter il parametro T[] object (che può essere un vettore di qualunque tipo di dato atomico).
Io personalmente l'ho implementato così (esempio):
1) Preparo l'array di stringhe che rappresenterà la lista da visualizzare nella Spinner (il numero di elementi è ottenuto da una COUNT sulla tabella coinvolta):
codice:
String[] listaPartiNonMatricolate = new String[numeroPartiNonMatricolate];
2) Leggo l'intera tabella e la memorizzo in quell'array di Stringhe:
codice:
public String[] selectPartiNonMatricolate(String pCdc){
String sql = "select DISTINCT(DESCRIZIONE) from GiacenzePartiMagazzino where tp = '" + pCdc + "' and flagmatricola = 0 order by descrizione asc";
Cursor cursor = sqLiteDatabase.rawQuery(sql, null);
String[] parti = new String[cursor.getCount()];
int x = 0;
cursor.moveToFirst();
for(int i = 0; i<cursor.getCount(); i++) {
parti[x] = cursor.getString(0);
x++;
cursor.moveToNext();
}
cursor.close();
return parti;
}
3) Utilizzo finalmente l'ArrayAdapter:
codice:
adapterPartiNonMatricolate = new ArrayAdapter<String>(this, R.layout.rowspinner, R.id.textViewSpinnerRow, listaPartiNonMatricolate);
4) Popolo infine la spinner con quell'Array Adapter:
codice:
spinnerPartiNonMatricolate.setAdapter(adapterPartiNonMatricolate);
... probabilmente quell'arrayAdapter risulta null poichè nel costruttore in fase di creazione non è stato indicato il parametro T[] objects
Giusto per test, prova a creare al volo un array String[] testArray con dentro 2/3 elementi, e crea il tuo ArrayAdapter così:
codice:
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.listitem, R.id.listItemTextView, testArray);
se il null pointer exception rientra, il problema è lì. Devi preparare i valori prima della dichiarazione dell'adapter.