blob: 24c6ae8356abebeb4359e82dfe83bbb7373cb3aa [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settingslib.drawer;
import android.graphics.drawable.Icon;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.settingslib.R;
import java.util.ArrayList;
import java.util.List;
public class SettingsDrawerAdapter extends BaseAdapter {
private final ArrayList<Item> mItems = new ArrayList<>();
private final SettingsDrawerActivity mActivity;
public SettingsDrawerAdapter(SettingsDrawerActivity activity) {
mActivity = activity;
}
void updateCategories() {
List<DashboardCategory> categories = mActivity.getDashboardCategories();
mItems.clear();
for (int i = 0; i < categories.size(); i++) {
Item category = new Item();
category.icon = null;
DashboardCategory dashboardCategory = categories.get(i);
category.label = dashboardCategory.title;
mItems.add(category);
for (int j = 0; j < dashboardCategory.tiles.size(); j++) {
Item tile = new Item();
DashboardTile dashboardTile = dashboardCategory.tiles.get(j);
tile.label = dashboardTile.title;
tile.icon = dashboardTile.icon;
tile.tile = dashboardTile;
mItems.add(tile);
}
}
notifyDataSetChanged();
}
public DashboardTile getTile(int position) {
return mItems.get(position).tile;
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public Object getItem(int position) {
return mItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public boolean isEnabled(int position) {
return mItems.get(position).icon != null;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Item item = mItems.get(position);
boolean isTile = item.icon != null;
if (convertView == null || (isTile != (convertView.getId() == R.id.tile_item))) {
convertView = LayoutInflater.from(mActivity).inflate(isTile ? R.layout.drawer_item
: R.layout.drawer_category,
parent, false);
}
if (isTile) {
((ImageView) convertView.findViewById(android.R.id.icon)).setImageIcon(item.icon);
}
((TextView) convertView.findViewById(android.R.id.title)).setText(item.label);
return convertView;
}
private static class Item {
public Icon icon;
public CharSequence label;
public DashboardTile tile;
}
}