public static final class attr {
}
public static final class color {
- public static int holo_blue_bright=0x7f030002;
- public static int holo_blue_dark=0x7f030001;
- public static int holo_blue_light=0x7f030000;
+ public static int holo_blue_bright=0x7f040002;
+ public static int holo_blue_dark=0x7f040001;
+ public static int holo_blue_light=0x7f040000;
+ public static int list_content_background=0x7f040003;
+ }
+ public static final class dimen {
+ /** Default screen margins, per the Android Design guidelines.
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+ */
+ public static int activity_horizontal_margin=0x7f050000;
+ public static int activity_vertical_margin=0x7f050001;
+ }
+ public static final class drawable {
+ public static int list_content_left=0x7f020000;
+ public static int list_content_right=0x7f020001;
}
public static final class id {
- public static int checkbox=0x7f04000a;
- public static int content=0x7f040001;
- public static int empty=0x7f040004;
- public static int footer_container=0x7f040005;
- public static int image=0x7f040007;
- public static int list=0x7f040000;
- public static int list_header_title=0x7f040006;
- public static int listview=0x7f040003;
- public static int summary=0x7f040009;
- public static int title=0x7f040008;
- public static int title_container=0x7f040002;
+ public static int checkbox=0x7f06000a;
+ public static int content=0x7f060000;
+ public static int empty=0x7f060004;
+ public static int footer_container=0x7f060005;
+ public static int image=0x7f060007;
+ public static int list_content_container=0x7f060002;
+ public static int list_header_title=0x7f060006;
+ public static int listview=0x7f060003;
+ public static int summary=0x7f060009;
+ public static int title=0x7f060008;
+ public static int title_container=0x7f060001;
}
public static final class layout {
- public static int list_content=0x7f020000;
- public static int list_fragment=0x7f020001;
- public static int list_header=0x7f020002;
- public static int list_item=0x7f020003;
- public static int list_item_base=0x7f020004;
- public static int list_item_selectable=0x7f020005;
+ public static int list_content=0x7f030000;
+ public static int list_content_header=0x7f030001;
+ public static int list_fragment=0x7f030002;
+ public static int list_header=0x7f030003;
+ public static int list_item=0x7f030004;
+ public static int list_item_base=0x7f030005;
+ public static int list_item_selectable=0x7f030006;
}
}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item>
+ <shape android:shape="rectangle" >
+ <solid android:color="@android:color/darker_gray" />
+ </shape>
+ </item>
+ <item android:left="1dp" android:top="1dp" android:bottom="1dp">
+ <shape android:shape="rectangle" >
+ <solid android:color="@android:color/white" />
+ </shape>
+ </item>
+
+</layer-list>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item>
+ <shape android:shape="rectangle" >
+ <solid android:color="@android:color/darker_gray" />
+ </shape>
+ </item>
+ <item android:left="1dp" android:right="1dp" android:top="1dp" android:bottom="1dp">
+ <shape android:shape="rectangle" >
+ <solid android:color="@android:color/white" />
+ </shape>
+ </item>
+
+</layer-list>
\ No newline at end of file
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:orientation="horizontal" >
+ android:background="@color/list_content_background"
+ android:orientation="vertical" >
- <ListView
- android:id="@+id/list"
+ <LinearLayout
+ android:id="@+id/title_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout_weight="2"
android:orientation="vertical" />
<LinearLayout
- android:id="@+id/content"
+ android:id="@+id/list_content_container"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="horizontal"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin" >
+
+ <ListView
+ android:layout_marginTop="16dp"
+ android:id="@+id/listview"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1.6180339887498948482"
+ android:background="@drawable/list_content_left" />
+
+ <TextView
+ android:id="@+id/empty"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_gravity="center"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:orientation="vertical"
+ android:textAppearance="@android:style/TextAppearance.Medium"
+ android:visibility="gone" />
+
+ <LinearLayout
+ android:id="@+id/content"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_weight="1"
+ android:background="@drawable/list_content_right"
+ android:orientation="vertical" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footer_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
android:orientation="vertical" />
</LinearLayout>
\ No newline at end of file
--- /dev/null
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/list_header_title"
+ style="@android:style/TextAppearance.Medium"
+ android:layout_width="fill_parent"
+ android:gravity="center"
+ android:padding="10dp"
+ android:layout_height="wrap_content"
+ android:textColor="@android:color/white"
+ android:background="@color/holo_blue_light"
+ />
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
- <LinearLayout
- android:id="@+id/list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" />
+ <include layout="@layout/list_fragment" />
<LinearLayout
android:id="@+id/content"
--- /dev/null
+<include xmlns:android="http://schemas.android.com/apk/res/android" layout="@layout/list_header" />
\ No newline at end of file
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
- android:paddingLeft="10dp"
- android:paddingRight="10dp" />
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin" />
<TextView
- android:textAppearance="@android:style/TextAppearance.Medium"
android:id="@+id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
- android:gravity="center"
android:layout_weight="1"
+ android:gravity="center"
android:orientation="vertical"
- android:padding="10dp"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:textAppearance="@android:style/TextAppearance.Medium"
android:visibility="gone" />
<LinearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="64dp"
android:orientation="horizontal" >
+ <View
+ android:layout_width="10dp"
+ android:layout_height="match_parent"
+ android:background="?android:attr/activatedBackgroundIndicator" />
+
<include layout="@layout/list_item_base" />
</LinearLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="list_content_background">#f1f1f1</color>
+</resources>
\ No newline at end of file
--- /dev/null
+<resources>
+
+ <!--
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw600dp devices (e.g. 7" tablets) here.
+ -->
+
+</resources>
\ No newline at end of file
--- /dev/null
+<resources>
+
+ <!--
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+ -->
+ <dimen name="activity_horizontal_margin">128dp</dimen>
+
+</resources>
\ No newline at end of file
--- /dev/null
+<resources>
+
+ <!--
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+ -->
+ <dimen name="activity_horizontal_margin">16dp</dimen>
+
+</resources>
\ No newline at end of file
<color name="holo_blue_dark">#ff0099cc</color>
<color name="holo_blue_bright">#ff00ddff</color>
+ <color name="list_content_background">@android:color/transparent</color>
+
</resources>
\ No newline at end of file
--- /dev/null
+<resources>
+
+ <!-- Default screen margins, per the Android Design guidelines. -->
+ <dimen name="activity_horizontal_margin">16dp</dimen>
+ <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
\ No newline at end of file
return android.R.id.content;
}
+ protected int getContentView() {
+ return 0;
+ }
+
ActivityBaseFragment fragment;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ int cv = getContentView();
+ if (0 != cv)
+ setContentView(cv);
+
try {
fragment = (ActivityBaseFragment)clazz.getConstructors()[0].newInstance();
fragment.setArguments(getIntent().getExtras());
import java.util.Comparator;
import android.content.Context;
+import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
ListView mListView;
MyAdapter mAdapter;
- static class MyAdapter extends SeparatedListAdapter<ListItemAdapter> {
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ float hor = getResources().getDimension(R.dimen.activity_horizontal_margin);
+ float ver = getResources().getDimension(R.dimen.activity_vertical_margin);
+ mListView.setPadding((int)hor, (int)ver, (int)hor, (int)ver);
+ }
+
+ public class MyAdapter extends SeparatedListAdapter<ListItemAdapter> {
public MyAdapter(Context context) {
super(context);
}
@Override
+ protected int getListHeaderResource() {
+ return ActivityBaseFragment.this.getListHeaderResource();
+ }
+
+ @Override
public boolean areAllItemsEnabled() {
return false;
}
mListener.onCreate(savedInstanceState, view);
}
+ protected int getListFragmentResource() {
+ return R.layout.list_fragment;
+ }
+
+ void onListItemClick(ListItem li) {
+
+ }
+
TextView mEmpty;
@Override
- public final View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View ret = inflater.inflate(R.layout.list_fragment, null);
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View ret = inflater.inflate(getListFragmentResource(), null);
mListView = (ListView)ret.findViewById(R.id.listview);
mListView.setOnItemClickListener(new OnItemClickListener() {
Object item = mAdapter.getItem(arg2);
if (item instanceof ListItem) {
ListItem li = (ListItem)item;
+ onListItemClick(li);
li.onClickInternal(arg1);
}
}
mDestroyed = true;
}
- public int getListItemResource() {
+ protected int getListHeaderResource() {
+ return R.layout.list_header;
+ }
+
+ protected int getListItemResource() {
return R.layout.list_item;
}
public ListView getListView() {
return mListView;
}
+
+ public MyAdapter getAdapter() {
+ return mAdapter;
+ }
}
+++ /dev/null
-package com.koushikdutta.widgets;
-
-import android.os.Bundle;
-import android.view.View;
-import android.widget.ListView;
-
-
-public class ListContentActivity extends ActivityBase {
- public static class ListContentFragment extends ActivityBaseFragment {
- @Override
- public int getListItemResource() {
- return R.layout.list_item_selectable;
- }
- }
-
- public ListContentActivity() {
- super(ListContentFragment.class);
- }
-
- @Override
- protected int getListContainerId() {
- return R.id.list;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.list_content);
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState, View view) {
- super.onCreate(savedInstanceState, view);
-
- getFragment().getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
-// getFragment().getListView().setCacheColorHint(android.R.color.transparent);
-// getFragment().getListView().setSelector(R.drawable.list_selector);
- }
-}
--- /dev/null
+package com.koushikdutta.widgets;
+
+import android.support.v4.app.Fragment;
+
+public interface ListContentAdapter {
+ public Fragment getFragment(ListItem listItem, Fragment convertFragment);
+}
--- /dev/null
+package com.koushikdutta.widgets;
+
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentTransaction;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ListView;
+
+public class ListContentFragment extends ActivityBaseFragment {
+ ViewGroup mContent;
+ ViewGroup mContainer;
+
+ @Override
+ protected int getListHeaderResource() {
+ return R.layout.list_content_header;
+ }
+
+ private void setPadding() {
+ float hor = getResources().getDimension(R.dimen.activity_horizontal_margin);
+ float ver = getResources().getDimension(R.dimen.activity_vertical_margin);
+ getListView().setPadding(0, 0, 0, 0);
+ mContainer.setPadding((int)hor, (int)ver, (int)hor, (int)ver);
+ }
+
+ Fragment mCurrentContent;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View ret = super.onCreateView(inflater, container, savedInstanceState);
+
+ mContent = (ViewGroup)ret.findViewById(R.id.content);
+ mContainer = (ViewGroup)ret.findViewById(R.id.list_content_container);
+
+ setPadding();
+ getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+
+ return ret;
+ }
+
+ public void setContent(Fragment content) {
+ Fragment last = mCurrentContent;
+ mCurrentContent = content;
+ FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
+ ft.add(R.id.content, mCurrentContent);
+ if (last != null)
+ ft.remove(last);
+ ft.commit();
+ }
+
+ @Override
+ void onListItemClick(ListItem li) {
+ super.onListItemClick(li);
+ if (mContentAdapter == null)
+ return;
+
+ setContent(mContentAdapter.getFragment(li, mCurrentContent));
+ }
+
+ @Override
+ protected int getListItemResource() {
+ return R.layout.list_item_selectable;
+ }
+
+ @Override
+ protected int getListFragmentResource() {
+ return R.layout.list_content;
+ }
+
+ public ViewGroup getContent() {
+ return mContent;
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ setPadding();
+ }
+
+ ListContentAdapter mContentAdapter;
+ public ListContentAdapter getContentAdapter() {
+ return mContentAdapter;
+ }
+
+ public void setContentAdapter(ListContentAdapter adapter) {
+ mContentAdapter = adapter;
+ }
+}
package com.koushikdutta.widgets;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CompoundButton;
private int Icon;
public ListItem setIcon(int icon) {
+ mDrawable = null;
Icon = icon;
Context.mAdapter.notifyDataSetChanged();
return this;
}
+ public ListItem setDrawable(Drawable drawable) {
+ mDrawable = drawable;
+ Icon = 0;
+ Context.mAdapter.notifyDataSetChanged();
+ return this;
+ }
+
public ListItem setEnabled(boolean enabled) {
Enabled = enabled;
Context.mAdapter.notifyDataSetChanged();
Icon = icon;
}
+ Drawable mDrawable;
+ public ListItem(ActivityBaseFragment context, String title, String summary, Drawable drawable) {
+ this(context, title, summary);
+ mDrawable = drawable;
+ }
+
private boolean CheckboxVisible = false;
private boolean checked = false;
iv.setVisibility(View.VISIBLE);
iv.setImageResource(Icon);
}
+ else if (mDrawable != null) {
+ iv.setVisibility(View.VISIBLE);
+ iv.setImageDrawable(mDrawable);
+ }
else {
iv.setVisibility(View.GONE);
}
headers.clear();
notifyDataSetChanged();
}
+
+ protected int getListHeaderResource() {
+ return R.layout.list_header;
+ }
private final HashMap<String, T> sections = new HashMap<String, T>();
private final ArrayAdapter<String> headers;
private final static int TYPE_SECTION_HEADER = 0;
public SeparatedListAdapter(Context context) {
- headers = new ArrayAdapter<String>(context, R.layout.list_header);
+ headers = new ArrayAdapter<String>(context, getListHeaderResource());
}
public void addSection(String section, T adapter) {
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
- android:theme="@android:style/Theme.Holo.Light" >
+ android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
</intent-filter>
</activity>
<activity
- android:name=".MainActivityDark" />
+ android:name=".MainActivityDark"
+ android:theme="@style/AppDarkTheme" />
<activity
- android:name=".ListContentTest"
- android:theme="@android:style/Theme.Holo" />
+ android:name=".ListContentTest"/>
</application>
</manifest>
\ No newline at end of file
public final class R {
public static final class id {
- public static final int summary = 0x7f060009;
- public static final int content = 0x7f060001;
- public static final int title = 0x7f060008;
- public static final int title_container = 0x7f060002;
- public static final int list_header_title = 0x7f060006;
- public static final int empty = 0x7f060004;
- public static final int checkbox = 0x7f06000a;
- public static final int footer_container = 0x7f060005;
- public static final int image = 0x7f060007;
- public static final int list = 0x7f060000;
- public static final int listview = 0x7f060003;
+ public static final int summary = 0x7f080009;
+ public static final int content = 0x7f080000;
+ public static final int title = 0x7f080008;
+ public static final int title_container = 0x7f080001;
+ public static final int list_header_title = 0x7f080006;
+ public static final int empty = 0x7f080004;
+ public static final int checkbox = 0x7f08000a;
+ public static final int footer_container = 0x7f080005;
+ public static final int image = 0x7f080007;
+ public static final int list_content_container = 0x7f080002;
+ public static final int listview = 0x7f080003;
}
public static final class color {
- public static final int holo_blue_light = 0x7f040000;
public static final int holo_blue_bright = 0x7f040002;
+ public static final int holo_blue_light = 0x7f040000;
+ public static final int list_content_background = 0x7f040003;
public static final int holo_blue_dark = 0x7f040001;
}
public static final class layout {
+ public static final int list_item_selectable = 0x7f030006;
+ public static final int list_content_header = 0x7f030001;
+ public static final int list_header = 0x7f030003;
public static final int list_content = 0x7f030000;
- public static final int list_header = 0x7f030002;
- public static final int list_item_base = 0x7f030004;
- public static final int list_item = 0x7f030003;
- public static final int list_item_selectable = 0x7f030005;
- public static final int list_fragment = 0x7f030001;
+ public static final int list_item_base = 0x7f030005;
+ public static final int list_item = 0x7f030004;
+ public static final int list_fragment = 0x7f030002;
+ }
+ public static final class drawable {
+ public static final int list_content_right = 0x7f020005;
+ public static final int list_content_left = 0x7f020004;
+ }
+ public static final class dimen {
+ public static final int activity_vertical_margin = 0x7f050001;
+ public static final int activity_horizontal_margin = 0x7f050000;
}
}
public static final int holo_blue_bright=0x7f040002;
public static final int holo_blue_dark=0x7f040001;
public static final int holo_blue_light=0x7f040000;
+ public static final int list_content_background=0x7f040003;
+ }
+ public static final class dimen {
+ /** Default screen margins, per the Android Design guidelines.
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+
+ Customize dimensions originally defined in res/values/dimens.xml (such as
+ screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+
+ */
+ public static final int activity_horizontal_margin=0x7f050000;
+ public static final int activity_vertical_margin=0x7f050001;
}
public static final class drawable {
public static final int box=0x7f020000;
public static final int drive=0x7f020001;
public static final int dropbox=0x7f020002;
public static final int ic_launcher=0x7f020003;
- public static final int nexusone=0x7f020004;
+ public static final int list_content_left=0x7f020004;
+ public static final int list_content_right=0x7f020005;
+ public static final int nexusone=0x7f020006;
}
public static final class id {
- public static final int checkbox=0x7f06000a;
- public static final int content=0x7f060001;
- public static final int empty=0x7f060004;
- public static final int footer_container=0x7f060005;
- public static final int image=0x7f060007;
- public static final int list=0x7f060000;
- public static final int list_header_title=0x7f060006;
- public static final int listview=0x7f060003;
- public static final int summary=0x7f060009;
- public static final int title=0x7f060008;
- public static final int title_container=0x7f060002;
+ public static final int checkbox=0x7f08000a;
+ public static final int content=0x7f080000;
+ public static final int empty=0x7f080004;
+ public static final int footer_container=0x7f080005;
+ public static final int image=0x7f080007;
+ public static final int list_content_container=0x7f080002;
+ public static final int list_header_title=0x7f080006;
+ public static final int listview=0x7f080003;
+ public static final int summary=0x7f080009;
+ public static final int title=0x7f080008;
+ public static final int title_container=0x7f080001;
}
public static final class layout {
public static final int list_content=0x7f030000;
- public static final int list_fragment=0x7f030001;
- public static final int list_header=0x7f030002;
- public static final int list_item=0x7f030003;
- public static final int list_item_base=0x7f030004;
- public static final int list_item_selectable=0x7f030005;
+ public static final int list_content_header=0x7f030001;
+ public static final int list_fragment=0x7f030002;
+ public static final int list_header=0x7f030003;
+ public static final int list_item=0x7f030004;
+ public static final int list_item_base=0x7f030005;
+ public static final int list_item_selectable=0x7f030006;
}
public static final class string {
- public static final int app_name=0x7f050000;
- public static final int box=0x7f050005;
- public static final int cloud=0x7f050001;
- public static final int devices=0x7f050006;
- public static final int dropbox=0x7f050004;
- public static final int googledrive=0x7f050002;
- public static final int googledrive_summary=0x7f050003;
+ public static final int app_name=0x7f060000;
+ public static final int box=0x7f060005;
+ public static final int cloud=0x7f060001;
+ public static final int devices=0x7f060006;
+ public static final int dropbox=0x7f060004;
+ public static final int googledrive=0x7f060002;
+ public static final int googledrive_summary=0x7f060003;
+ }
+ public static final class style {
+ /** API 14 theme customizations can go here.
+ */
+ public static final int AppBaseDarkTheme=0x7f070002;
+ /**
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+
+
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+
+
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+
+ API 14 theme customizations can go here.
+ */
+ public static final int AppBaseTheme=0x7f070000;
+ /** Application theme.
+ All customizations that are NOT specific to a particular API-level can go here.
+ */
+ public static final int AppDarkTheme=0x7f070003;
+ /** Application theme.
+ All customizations that are NOT specific to a particular API-level can go here.
+ */
+ public static final int AppTheme=0x7f070001;
+ public static final int RequestTheme=0x7f070004;
}
}
--- /dev/null
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <style name="RequestTheme" parent="@android:style/Theme.Holo.Light.Dialog"></style>
+</resources>
\ No newline at end of file
--- /dev/null
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <!--
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+ -->
+ <style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
+ <!-- API 14 theme customizations can go here. -->
+ </style>
+
+ <style name="AppBaseDarkTheme" parent="android:Theme.Holo">
+ <!-- API 14 theme customizations can go here. -->
+ </style>
+</resources>
\ No newline at end of file
--- /dev/null
+<resources>
+
+ <!--
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+ -->
+ <style name="AppBaseTheme" parent="@android:style/Theme.Light">
+ <!--
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+ -->
+ </style>
+
+ <!-- Application theme. -->
+ <style name="AppTheme" parent="AppBaseTheme">
+ <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+ </style>
+
+ <style name="AppBaseDarkTheme" parent="android:Theme.Black">
+
+ </style>
+
+ <!-- Application theme. -->
+ <style name="AppDarkTheme" parent="AppBaseDarkTheme">
+ <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+ </style>
+
+</resources>
\ No newline at end of file
package com.koushikdutta.widgets.sample;
+import java.util.Date;
+import java.util.List;
+
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
import android.os.Bundle;
+import android.os.Handler;
import android.view.View;
+import android.widget.TextView;
-import com.koushikdutta.widgets.ListContentActivity;
+import com.koushikdutta.widgets.ActivityBase;
+import com.koushikdutta.widgets.ListContentAdapter;
+import com.koushikdutta.widgets.ListContentFragment;
import com.koushikdutta.widgets.ListItem;
-public class ListContentTest extends ListContentActivity {
+public class ListContentTest extends ActivityBase {
+ public ListContentTest() {
+ super(ListContentFragment.class);
+ }
+
+ public ListContentFragment getFragment() {
+ return (ListContentFragment)super.getFragment();
+ }
+
+ protected void onResume() {
+ super.onResume();
+ getFragment().getListView().setItemChecked(1, true);
+
+ };
+
+
+ Handler handler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState, View view) {
super.onCreate(savedInstanceState, view);
+ List<PackageInfo> pkgs = getPackageManager().getInstalledPackages(0);
+ int count = 0;
+ for (PackageInfo pkg: pkgs) {
+// if (count == 6)
+// break;
+ if ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
+ continue;
+
+ count++;
+
+ addItem("Allow", new ListItem(getFragment(), pkg.applicationInfo.loadLabel(getPackageManager()).toString(), new Date().toLocaleString(), pkg.applicationInfo.loadIcon(getPackageManager())));
+ }
+
// android:background="?android:attr/activatedBackgroundIndicator"
- addItem(R.string.devices, new ListItem(getFragment(), "Nexus S", null, R.drawable.nexusone));
- addItem(R.string.devices, new ListItem(getFragment(), "Nexus One", null, R.drawable.nexusone));
- addItem(R.string.devices, new ListItem(getFragment(), "Nexus 4", null, R.drawable.nexusone));
- addItem(R.string.devices, new ListItem(getFragment(), "Nexus 7", null, R.drawable.nexusone));
- addItem(R.string.devices, new ListItem(getFragment(), "Nexus 10", null, R.drawable.nexusone));
+// addItem("Allow", new ListItem(getFragment(), "Nexus S", null, R.drawable.nexusone));
+// addItem("Allow", new ListItem(getFragment(), "Nexus One", null, R.drawable.nexusone));
+// addItem("Allow", new ListItem(getFragment(), "Nexus 4", null, R.drawable.nexusone));
+// addItem("Deny", new ListItem(getFragment(), "Nexus 7", null, R.drawable.nexusone));
+// addItem("Deny", new ListItem(getFragment(), "Nexus 10", null, R.drawable.nexusone));
- getFragment().getListView().setItemChecked(0, true);
+ handler.postDelayed(new Runnable() {
+
+ @Override
+ public void run() {
+// getFragment().getListView().requestFocus();
+// getFragment().getListView().requestFocusFromTouch();
+// getFragment().getListView().setItemChecked(1, true);
+ }
+ }, 200);
+// getFragment().getListView().setItemChecked(1, true);
+
+// getFragment().setContentAdapter(new ListContentAdapter() {
+// @Override
+// public View getView(ListItem listItem, View convertView) {
+// TextView tv = new TextView(ListContentTest.this);
+// tv.setText(listItem.getTitle());
+// return tv;
+// }
+// });
+
+// getFragment().getListView().setPadding(0, 0, 0, 0);
}
}