La mia ipotesi è che sia stata analizzata la stringa JSON in un modello di oggetto prima di considerare entrambi i casi ... chiamiamo questo profilo di classe.
Strategia 1
Un ArrayAdapter è sufficiente con un metodo sovresposta GetView (..) che concatenare le vostre più campi insieme nel modo che desiderate.
ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
// use the ViewHolder pattern here to get a reference to v, then populate
// its individual fields however you wish... v may be a composite view in this case
}
}
Consiglio vivamente il modello ViewHolder per potenzialmente grandi liste: https://web.archive.org/web/20110819152518/http://www.screaming-penguin.com/node/7767
Si fa una differenza enorme.
- Vantaggio 1. consente di applicare un layout complesso per ogni punto dell'ordine del ListView.
- Vantaggio 2. Non richiede di manipolare toString() in modo che corrisponda alla visualizzazione desiderata (dopo tutto, mantenere la logica di visualizzazione e modello separata non è mai una cattiva pratica di progettazione).
Strategia 2
In alternativa, se il metodo toString() sul tuo rappresentante di classe ha già un formato che sia accettabile per la visualizzazione è possibile utilizzare ArrayAdapter senza sostituire GetView().
Questa strategia è più semplice, ma ti costringe a distruggere tutto in una stringa per la visualizzazione.
ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles)
http://stackoverflow.com/questions/3349693/baseadapter-or-arrayadaptor-android controlla questo. –