2012-04-02 8 views
0

Ich versuche, die Daten über eine AsyncTask auf einen Adapter festzulegen. Dies hat viel Leid verursacht - zuletzt beim Versuch, den Array-Adapter zu setzen.NullPointer Ausnahme beim Einstellen des Adapters für eine ListView

Die folgende Methode wird onPostExecute();

private void setQueues(final JSONObject[] qInfo) 
{ 
    queues = new QueueItem[qInfo.length]; 

    for(int i = 0; i < qInfo.length; i++) 
    { 
     queues[i] = new QueueItem(); 
     //final int ii = i; 

     // Formatting the queue title 
     String name = qInfo[i].optString("name").replace("-", " "); 
     queues[i].label = name; 

     try { 
      if(qInfo[i].getString("active").contains("1")) 
      { 
       queues[i].value = true; 
      } 
      else 
      { 
       queues[i].value = false; 
      } 
     } 
     catch (JSONException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    lv.setAdapter(new QueueAdapter(getActivity(), 
      R.layout.queues_items, queues)); 

Dies bewirkt, dass die folgende Ausnahme Laufzeit: link here

EDIT: Wie gewünscht, hier ist QueueAdapter:

public class QueueAdapter extends ArrayAdapter<QueueItem>{ 

Context context; 
int layoutResourceId;  
QueueItem data[] = null; 

public QueueAdapter(Context context, int layoutResourceId, QueueItem[] data) { 
    super(context, layoutResourceId, data); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    this.data = data; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    QueueHolder holder = null; 

    if(row == null) 
    { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 

     holder = new QueueHolder(); 
     holder.queueswitch = (Switch)row.findViewById(R.id.queues_item_switch); 
     holder.txtLabel = (TextView)row.findViewById(R.id.queues_item_text); 

     row.setTag(holder); 
    } 
    else 
    { 
    holder = (QueueHolder)row.getTag(); 
    } 

    QueueItem queue = data[position]; 
    holder.txtLabel.setText(queue.label); 
    holder.queueswitch.setChecked(queue.value); 

    return row; 
} 

static class QueueHolder 
{ 
    Switch queueswitch; 
    TextView txtLabel; 
} 
} 
+0

Welche Ausnahme ist das? – Araw

+0

überprüfen QueuesFragment-Klasse Zeilennummer 98 – Abhi

+0

scheint, gibt es ein Problem in QueueAdapter oder queues_items Code geben Sie den Code – vipin

Antwort

1
lv.setAdapter(new QueueAdapter(getActivity(), 
      R.layout.queues_items, queues)); 

dieser Ausschnitt in Try-Block sein sollte .. Weil Wenn es JSONException gibt, werden alle Elemente in diesem Array null sein ...

ich sagen will .. hineingelegt try-Block für Schleife und nicht die oppt .. Wenn Sie noch Schleife zu wollen, wenn eine Ausnahme Dann Sammlungen statt Array Versuchen .. auftritt .. mit

+0

Wahr. Aber selbst wenn es keine JSONException gibt, verursacht es immer noch eine Nullzeigerausnahme – CodePrimate

+0

@litemode .. Sie müssen sicherstellen, dass die Elemente in diesem Array in keinem Fall null sind. Warum versuchen Sie nicht Sammlungen anstelle von Array .. Verwenden Sie eine Hashtable, die keine Nullwerte zulässt. – ngesh

+0

Das beantwortet meine Frage nicht. qInfo enthält in diesem Fall gültige Daten. Das gleiche gilt für QueueItem. – CodePrimate

Verwandte Themen