AndroidのListViewのAdapterを静的インナークラスで実装しています。
AdapterからActivityの変数を参照する為に、Adapterの中に弱参照でActivityを保持しています。

以下、疑問に思っていることです。

・Adapterの中でmActivity.get()がnullを返すことはあるのか?
もしある場合は、TestAdapter.getView()でnullを返してもよいのでしょうか?
但し、固定でnullを返すと例外が発生しました。

・どこかのサイトでインナークラスは静的クラスのほうがメモリリークしないと書いてあったので、Adapterを静的インナークラスにしましたが、正しい実装なのでしょうか?

どうかアドバイスをよろしくお願いします。

public class TestActivity extends Activity {

  private List<String> mData = new ArrayList<String>();
  private ListView mListView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.testactivity);
    mListView = (ListView)findViewById(R.id.listview);
    mListView.setAdapter(new TestAdapter(this));
  }

  private static class ViewHolder {

    public ViewHolder(View view) {
    }

  }

  private static class TestAdapter extends BaseAdapter {

    private WeakReference<TestActivity> mActivity;

    public TestAdapter(TestActivity activity) {
      super();
      mActivity = new WeakReference<TestActivity>(activity);
    }

    @Override
    public int getCount() {
      TestActivity activity = mActivity.get();
      return activity != null ? activity.mData.size() : 0;
    }

    @Override
    public Object getItem(int position) {
      TestActivity activity = mActivity.get();
      return activity != null ? activity.mData.get(position) : null;
    }

    @Override
    public long getItemId(int position) {
      return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      MovieListActivity activity = mActivity.get();
      if (activity == null)
        return null;    //ここでnullを返してもよいのか?

    }

  }

}