diff options
| author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-04-10 19:25:44 +0200 | 
|---|---|---|
| committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-04-10 19:25:46 +0200 | 
| commit | 0687f7f40e1aecf4fbc109c3ab3fa2c3613546b3 (patch) | |
| tree | 3ce322559e82ddc2e9c0a5f354092ff11a55f637 /OpenKeychain/src/main/java | |
| parent | 31e8926d6fc58b0967f2082e7d509850eca57a28 (diff) | |
| download | open-keychain-0687f7f40e1aecf4fbc109c3ab3fa2c3613546b3.tar.gz open-keychain-0687f7f40e1aecf4fbc109c3ab3fa2c3613546b3.tar.bz2 open-keychain-0687f7f40e1aecf4fbc109c3ab3fa2c3613546b3.zip | |
use view holder pattern in KeyListFragment
Closes #551
Diffstat (limited to 'OpenKeychain/src/main/java')
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java | 85 | 
1 files changed, 49 insertions, 36 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index 0371e664f..c59284010 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -464,6 +464,31 @@ public class KeyListFragment extends Fragment              return super.swapCursor(newCursor);          } +        private class ItemViewHolder { +            TextView mMainUserId; +            TextView mMainUserIdRest; +            View mStatusDivider; +            FrameLayout mStatusLayout; +            Button mButton; +            TextView mRevoked; +            ImageView mVerified; +        } + +        @Override +        public View newView(Context context, Cursor cursor, ViewGroup parent) { +            View view = mInflater.inflate(R.layout.key_list_item, parent, false); +            ItemViewHolder holder = new ItemViewHolder(); +            holder.mMainUserId = (TextView) view.findViewById(R.id.mainUserId); +            holder.mMainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest); +            holder.mStatusDivider = (View) view.findViewById(R.id.status_divider); +            holder.mStatusLayout = (FrameLayout) view.findViewById(R.id.status_layout); +            holder.mButton = (Button) view.findViewById(R.id.edit); +            holder.mRevoked = (TextView) view.findViewById(R.id.revoked); +            holder.mVerified = (ImageView) view.findViewById(R.id.verified); +            view.setTag(holder); +            return view; +        } +          /**           * Bind cursor data to the item list view           * <p/> @@ -472,43 +497,36 @@ public class KeyListFragment extends Fragment           */          @Override          public void bindView(View view, Context context, Cursor cursor) { +            ItemViewHolder h = (ItemViewHolder) view.getTag();              { // set name and stuff, common to both key types -                TextView mainUserId = (TextView) view.findViewById(R.id.mainUserId); -                TextView mainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest); -                  String userId = cursor.getString(INDEX_USER_ID);                  String[] userIdSplit = PgpKeyHelper.splitUserId(userId);                  if (userIdSplit[0] != null) { -                    mainUserId.setText(highlightSearchQuery(userIdSplit[0])); +                    h.mMainUserId.setText(highlightSearchQuery(userIdSplit[0]));                  } else { -                    mainUserId.setText(R.string.user_id_no_name); +                    h.mMainUserId.setText(R.string.user_id_no_name);                  }                  if (userIdSplit[1] != null) { -                    mainUserIdRest.setText(highlightSearchQuery(userIdSplit[1])); -                    mainUserIdRest.setVisibility(View.VISIBLE); +                    h.mMainUserIdRest.setText(highlightSearchQuery(userIdSplit[1])); +                    h.mMainUserIdRest.setVisibility(View.VISIBLE);                  } else { -                    mainUserIdRest.setVisibility(View.GONE); +                    h.mMainUserIdRest.setVisibility(View.GONE);                  }              }              { // set edit button and revoked info, specific by key type -                View statusDivider = (View) view.findViewById(R.id.status_divider); -                FrameLayout statusLayout = (FrameLayout) view.findViewById(R.id.status_layout); -                Button button = (Button) view.findViewById(R.id.edit); -                TextView revoked = (TextView) view.findViewById(R.id.revoked); -                ImageView verified = (ImageView) view.findViewById(R.id.verified);                  if (cursor.getInt(KeyListFragment.INDEX_HAS_SECRET) != 0) { -                    // this is a secret key - show the edit button -                    statusDivider.setVisibility(View.VISIBLE); -                    statusLayout.setVisibility(View.VISIBLE); -                    revoked.setVisibility(View.GONE); -                    verified.setVisibility(View.GONE); -                    button.setVisibility(View.VISIBLE); +                    // this is a secret key - show the edit mButton +                    h.mStatusDivider.setVisibility(View.VISIBLE); +                    h.mStatusLayout.setVisibility(View.VISIBLE); +                    h.mRevoked.setVisibility(View.GONE); +                    h.mVerified.setVisibility(View.GONE); +                    h.mButton.setVisibility(View.VISIBLE);                      final long id = cursor.getLong(INDEX_MASTER_KEY_ID); -                    button.setOnClickListener(new OnClickListener() { +                    h.mButton.setOnClickListener(new OnClickListener() {                          public void onClick(View view) {                              Intent editIntent = new Intent(getActivity(), EditKeyActivity.class);                              editIntent.setData(KeyRingData.buildSecretKeyRingUri(Long.toString(id))); @@ -517,23 +535,23 @@ public class KeyListFragment extends Fragment                          }                      });                  } else { -                    // this is a public key - hide the edit button, show if it's revoked -                    statusDivider.setVisibility(View.GONE); -                    button.setVisibility(View.GONE); +                    // this is a public key - hide the edit mButton, show if it's revoked +                    h.mStatusDivider.setVisibility(View.GONE); +                    h.mButton.setVisibility(View.GONE);                      boolean isRevoked = cursor.getInt(INDEX_IS_REVOKED) > 0;                      boolean isExpired = !cursor.isNull(INDEX_EXPIRY)                              && new Date(cursor.getLong(INDEX_EXPIRY)*1000).before(new Date());                      if(isRevoked || isExpired) { -                        statusLayout.setVisibility(View.VISIBLE); -                        revoked.setVisibility(View.VISIBLE); -                        verified.setVisibility(View.GONE); -                        revoked.setText(isRevoked ? R.string.revoked : R.string.expired); +                        h.mStatusLayout.setVisibility(View.VISIBLE); +                        h.mRevoked.setVisibility(View.VISIBLE); +                        h.mVerified.setVisibility(View.GONE); +                        h.mRevoked.setText(isRevoked ? R.string.revoked : R.string.expired);                      } else {                          boolean isVerified = cursor.getInt(INDEX_VERIFIED) > 0; -                        statusLayout.setVisibility(isVerified ? View.VISIBLE : View.GONE); -                        revoked.setVisibility(View.GONE); -                        verified.setVisibility(isVerified ? View.VISIBLE : View.GONE); +                        h.mStatusLayout.setVisibility(isVerified ? View.VISIBLE : View.GONE); +                        h.mRevoked.setVisibility(View.GONE); +                        h.mVerified.setVisibility(isVerified ? View.VISIBLE : View.GONE);                      }                  }              } @@ -555,11 +573,6 @@ public class KeyListFragment extends Fragment              return mCursor.getLong(INDEX_MASTER_KEY_ID);          } -        @Override -        public View newView(Context context, Cursor cursor, ViewGroup parent) { -            return mInflater.inflate(R.layout.key_list_item, parent, false); -        } -          /**           * Creates a new header view and binds the section headers to it. It uses the ViewHolder           * pattern. Most functionality is similar to getView() from Android's CursorAdapter. @@ -641,7 +654,7 @@ public class KeyListFragment extends Fragment              }          } -        class HeaderViewHolder { +        private class HeaderViewHolder {              TextView mText;              TextView mCount;          } | 
