Ich habe einen Kundenadapter (SongsAdapter
), der ArrayAdapter
erweitert und es enthält ein Array von Song
Objekte. In meinen Fragmenten onCreateView
Methode versuche ich diesen Adapter zu initialisieren.Erstellen eines Adapters für Listview, ohne zunächst ein Array zu übergeben
adapter = new SongsAdapter(getContext(), arrayOfSongs);
Das Problem ist, dass anfänglich Null ist. Der Benutzer sollte für einen Song auf der iTunes-Datenbank suchen und wenn ich eine Antwort bekommen, ich habe die JSON parsen und Song-Objekte erstellen und sie dann zu meinem Adapter
adapter.addAll(songs);
und dann
adapter.notifyDataSetChanged();
hinzufügen, aber ich erhalte eine Ausnahme
java.lang.NullPointerException at android.widget.ArrayAdapter.getCount
Wie kann ich die Listenansicht, bis die erste Suche nach dem Benutzer zu verbergen, und es dann wieder sichtbar machen die Ergebnisse anzuzeigen. Wie würde ich den Adapter richtig initialisieren?
Hier ist mein Adapter
public class SongsAdapter extends ArrayAdapter<Song> {
public SongsAdapter(Context context, ArrayList<Song> songs) {
super(context, 0, songs);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Song song = getItem(position);
if (convertView == null)
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_song, parent, false);
TextView artistName = (TextView) convertView.findViewById(R.id.artistName);
TextView trackName = (TextView) convertView.findViewById(R.id.trackName);
artistName.setText(song.getArtist());
trackName.setText(song.getTitle());
return convertView;
}
}
Machen Sie das Array zunächst Null statt Null. –
Sie sollten eine leere ArrayList initialisieren, die in den Adapter eingefügt werden soll, anstatt einen Null-Check innerhalb des Adapters zu verwenden. –