Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java

Issue 199733002: Cleanup AppMenu code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move lint suppression to AppMenuDragHelper Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce4cd65badc3f0b64481b46a0613c53d93e3d47b
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuAdapter.java
@@ -0,0 +1,104 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.appmenu;
+
+import android.graphics.drawable.Drawable;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import org.chromium.chrome.R;
+
+import java.util.List;
+
+/**
+ * ListAdapter to customize the view of items in the list.
+ */
+class AppMenuAdapter extends BaseAdapter {
+ private static final int VIEW_TYPE_MENUITEM = 0;
+ private static final int VIEW_TYPE_COUNT = 1;
+
+ private final LayoutInflater mInflater;
+ private final List<MenuItem> mMenuItems;
+ private final int mNumMenuItems;
+
+ public AppMenuAdapter(List<MenuItem> menuItems, LayoutInflater inflater) {
+ mMenuItems = menuItems;
+ mInflater = inflater;
+ mNumMenuItems = menuItems.size();
+ }
+
+ @Override
+ public int getCount() {
+ return mNumMenuItems;
+ }
+
+ @Override
+ public int getViewTypeCount() {
+ return VIEW_TYPE_COUNT;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return VIEW_TYPE_MENUITEM;
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return getItem(position).getItemId();
+ }
+
+ @Override
+ public MenuItem getItem(int position) {
+ if (position == ListView.INVALID_POSITION) return null;
+ assert position >= 0;
+ assert position < mMenuItems.size();
+ return mMenuItems.get(position);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View rowView = convertView;
+ // A ViewHolder keeps references to children views to avoid unneccessary calls
+ // to findViewById() on each row.
+ ViewHolder holder = null;
+
+ // When convertView is not null, we can reuse it directly, there is no need
+ // to reinflate it.
+ if (rowView == null) {
+ holder = new ViewHolder();
+ rowView = mInflater.inflate(R.layout.menu_item, null);
+ holder.text = (TextView) rowView.findViewById(R.id.menu_item_text);
+ holder.image = (AppMenuItemIcon) rowView.findViewById(R.id.menu_item_icon);
+ rowView.setTag(holder);
+ } else {
+ holder = (ViewHolder) convertView.getTag();
+ }
+ MenuItem item = getItem(position);
+
+ // Set up the icon.
+ Drawable icon = item.getIcon();
+ holder.image.setImageDrawable(icon);
+ holder.image.setVisibility(icon == null ? View.GONE : View.VISIBLE);
+ holder.image.setChecked(item.isChecked());
+
+ holder.text.setText(item.getTitle());
+ boolean isEnabled = item.isEnabled();
+ // Set the text color (using a color state list).
+ holder.text.setEnabled(isEnabled);
+ // This will ensure that the item is not highlighted when selected.
+ rowView.setEnabled(isEnabled);
+ return rowView;
+ }
+
+ static class ViewHolder {
+ public TextView text;
+ public AppMenuItemIcon image;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698