2012-04-02 4 views
0

AsyncTaskを使用してアダプタにデータを設定しようとしています。最近、Array Adapterを設定しようとしています。ListViewのアダプタを設定する際のNullPointer例外

以下のメソッドは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)); 

これは、次の例外ランタイムが発生します。link here

EDIT:要求されたとして、ここ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

どういう例外ですか? – Araw

+0

check QueuesFragmentクラス行番号98 – Abhi

+0

QueueAdapterまたはqueues_itemsコードに問題があると思われるコード – vipin

答えて

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

このスニペットは、tryブロックにする必要があります。..ので、 JSONExceptionがある場合、配列内のすべての要素はNULLになります。

私は言いたいのは、tryブロック内にputtopを入れないで、oppt ..を入れたくない場合です。例外が発生したときにループしたい場合は、配列の代わりにコレクションを使用してください。

+0

真。しかし、JSONExceptionが存在しない場合でも、nullポインタ例外が発生します。 – CodePrimate

+0

@litemode ..配列の要素がnullでないことを確認する必要があります。なぜなら、配列の代わりにコレクションを試してみてください..ヌル値を許可しないハッシュテーブルを使用してください。 – ngesh

+0

これは私の質問に答えません。この場合、qInfoは有効なデータを保持します。 QueueItemも同様です。 – CodePrimate

関連する問題