title: NullPointerException in CursorAdapter's bindView() method
body: <p>I'm getting the following errors in my app, and I think it has to do with the way I did the layout files, or used them in my code.</p>
  
  <pre><code>05-31 13:39:59.283: E/AndroidRuntime(332): Uncaught handler: thread main exiting due to uncaught exception
  05-31 13:39:59.293: E/AndroidRuntime(332): java.lang.NullPointerException
  05-31 13:39:59.293: E/AndroidRuntime(332):  at com.dd.qsg.ShowAchievements$AchievementAdapter.bindView(ShowAchievements.java:38)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.CursorAdapter.getView(CursorAdapter.java:186)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.AbsListView.obtainView(AbsListView.java:1274)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1147)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.ListView.onMeasure(ListView.java:1060)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.View.measure(View.java:7964)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:619)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:280)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.View.measure(View.java:7964)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.View.measure(View.java:7964)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.View.measure(View.java:7964)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.View.measure(View.java:7964)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.os.Handler.dispatchMessage(Handler.java:99)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.os.Looper.loop(Looper.java:123)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at android.app.ActivityThread.main(ActivityThread.java:4363)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at java.lang.reflect.Method.invokeNative(Native Method)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at java.lang.reflect.Method.invoke(Method.java:521)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  05-31 13:39:59.293: E/AndroidRuntime(332):  at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p>Here is the <code>ShowAchievements</code> class:</p>
  
  <pre><code>package com.dd.qsg;
  
  import android.app.ListActivity;
  import android.content.Context;
  import android.database.Cursor;
  import android.graphics.Color;
  import android.os.Bundle;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.CursorAdapter;
  import android.widget.TextView;
  
  public class ShowAchievements extends ListActivity {
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.achievements);
  
          DatabaseHandler db = new DatabaseHandler(this);
          Cursor cursor = db.getAchievements(this);
          AchievementAdapter cursorAdapter = new AchievementAdapter(this, cursor);
  
          this.setListAdapter(cursorAdapter);
      } 
  
      private class AchievementAdapter extends CursorAdapter {
          public AchievementAdapter(Context context, Cursor c) {
              super(context, c);
          }
  
          @Override
          public void bindView(View v, Context context, Cursor cursor) {
              if(cursor.getString(cursor.getColumnIndex("completed")).equals("yes")) {
                  TextView tv = (TextView) v.findViewById(R.id.achView1);
                  tv.setTextColor(Color.GREEN);
              }
          }
  
          @Override
          public View newView(Context context, Cursor cursor, ViewGroup parent) {
              LayoutInflater inflater = LayoutInflater.from(context);
              View v = inflater.inflate(R.layout.achievements, parent, false);
              return v;
          }
      }    
  }
  </code></pre>
  
  <p>Here is the <code>getAchievements()</code> method that is within my <code>DatabaseHandler</code> class:</p>
  
  <pre><code>public Cursor getAchievements(Context context) {
      String selectQuery = "SELECT * FROM achievements ORDER BY _id asc";
      SQLiteDatabase db = this.getWritableDatabase();
      return db.rawQuery(selectQuery, null);
  }
  </code></pre>
  
  <p>Here is my <code>achievements</code> layout:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" &gt;
  
      &lt;ListView
          android:id="@android:id/list"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" /&gt;
  
      &lt;TextView
          android:id="@+id/android:empty"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:text=""/&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Here is my <code>achievements_item</code> layout:</p>
  
  <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" &gt;
  
      &lt;TextView
          android:id="@+id/achView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="" /&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>I'm assuming these errors are caused by how I did my xml files. Was I supposed to put the <code>achView1</code> <code>TextView</code> inside of the <code>achievements</code> layout rather than the <code>achievements_item</code> layout? Should I remove the empty <code>TextView</code> from <code>achievements</code>?</p>