@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.key_server_query_layout);

    mQuery = (EditText) findViewById(R.id.query);
    mSearch = (Button) findViewById(R.id.btn_search);
    mList = (ListView) findViewById(R.id.list);
    mAdapter = new KeyInfoListAdapter(this);
    mList.setAdapter(mAdapter);

    mKeyServer = (Spinner) findViewById(R.id.keyServer);
    ArrayAdapter<String> adapter =
        new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, mPreferences.getKeyServers());
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mKeyServer.setAdapter(adapter);
    if (adapter.getCount() > 0) {
      mKeyServer.setSelection(0);
    } else {
      mSearch.setEnabled(false);
    }

    mList.setOnItemClickListener(
        new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> adapter, View view, int position, long keyId) {
            get(keyId);
          }
        });

    mSearch.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            String query = mQuery.getText().toString();
            search(query);
          }
        });

    Intent intent = getIntent();
    if (Apg.Intent.LOOK_UP_KEY_ID.equals(intent.getAction())
        || Apg.Intent.LOOK_UP_KEY_ID_AND_RETURN.equals(intent.getAction())) {
      long keyId = intent.getLongExtra(Apg.EXTRA_KEY_ID, 0);
      if (keyId != 0) {
        String query = "0x" + Apg.keyToHex(keyId);
        mQuery.setText(query);
        search(query);
      }
    }
  }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      KeyInfo keyInfo = mKeys.get(position);

      View view = mInflater.inflate(R.layout.key_server_query_result_item, null);

      TextView mainUserId = (TextView) view.findViewById(R.id.mainUserId);
      mainUserId.setText(R.string.unknownUserId);
      TextView mainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest);
      mainUserIdRest.setText("");
      TextView keyId = (TextView) view.findViewById(R.id.keyId);
      keyId.setText(R.string.noKey);
      TextView algorithm = (TextView) view.findViewById(R.id.algorithm);
      algorithm.setText("");
      TextView status = (TextView) view.findViewById(R.id.status);
      status.setText("");

      String userId = keyInfo.userIds.get(0);
      if (userId != null) {
        String chunks[] = userId.split(" <", 2);
        userId = chunks[0];
        if (chunks.length > 1) {
          mainUserIdRest.setText("<" + chunks[1]);
        }
        mainUserId.setText(userId);
      }

      keyId.setText(Apg.getSmallFingerPrint(keyInfo.keyId));

      if (mainUserIdRest.getText().length() == 0) {
        mainUserIdRest.setVisibility(View.GONE);
      }

      algorithm.setText("" + keyInfo.size + "/" + keyInfo.algorithm);

      if (keyInfo.revoked != null) {
        status.setText("revoked");
      } else {
        status.setVisibility(View.GONE);
      }

      LinearLayout ll = (LinearLayout) view.findViewById(R.id.list);
      if (keyInfo.userIds.size() == 1) {
        ll.setVisibility(View.GONE);
      } else {
        boolean first = true;
        boolean second = true;
        for (String uid : keyInfo.userIds) {
          if (first) {
            first = false;
            continue;
          }
          if (!second) {
            View sep = new View(mActivity);
            sep.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 1));
            sep.setBackgroundResource(android.R.drawable.divider_horizontal_dark);
            ll.addView(sep);
          }
          TextView uidView =
              (TextView) mInflater.inflate(R.layout.key_server_query_result_user_id, null);
          uidView.setText(uid);
          ll.addView(uidView);
          second = false;
        }
      }

      return view;
    }