package com.ToxicBakery.lollipop;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.StringRes;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.ToxicBakery.lollipop.demo.CardViewActivity;
import com.ToxicBakery.lollipop.demo.NewActivityTransitionsActivity;
import com.ToxicBakery.lollipop.demo.RecyclerViewActivity;
import com.ToxicBakery.lollipop.demo.RevealActivity;
import com.ToxicBakery.lollipop.demo.RippleActivity;
import com.ToxicBakery.lollipop.demo.WearableNotificationsActivity;
import com.ToxicBakery.lollipop.demo.WearableSyncActivity;
public class MainActivity extends Activity implements AdapterView.OnItemClickListener {
private static final Demonstration[] DEMOS = {
new Demonstration(CardViewActivity.class, R.string.demo_cardview)
, new Demonstration(RecyclerViewActivity.class, R.string.demo_recycler_view)
, new Demonstration(RevealActivity.class, R.string.demo_reveal)
, new Demonstration(RippleActivity.class, R.string.demo_ripple)
, new Demonstration(NewActivityTransitionsActivity.class, R.string.demo_activity_transitions)
, new Demonstration(WearableNotificationsActivity.class, R.string.demo_wearable_notifications)
//, new Demonstration(WearableSyncActivity.class, R.string.demo_wearable_sync)
};
private ListView listViewDemos;
private DemonstrationAdapter demonstrationAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
demonstrationAdapter = new DemonstrationAdapter();
listViewDemos = (ListView) findViewById(R.id.activity_main_list_view_demos);
listViewDemos.setAdapter(demonstrationAdapter);
listViewDemos.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (parent == listViewDemos) {
Demonstration demonstration = demonstrationAdapter.getItem(position);
Intent intent = new Intent(this, demonstration.activityClass);
startActivity(intent);
}
}
private static final class Demonstration {
private final Class<? extends Activity> activityClass;
@StringRes
private final int title;
private Demonstration(Class<? extends Activity> activityClass, int title) {
this.activityClass = activityClass;
this.title = title;
}
}
private static final class DemonstrationAdapter extends BaseAdapter {
@Override
public int getCount() {
return DEMOS.length;
}
@Override
public Demonstration getItem(int position) {
return DEMOS[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(android.R.layout
.simple_selectable_list_item, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Demonstration demonstration = getItem(position);
viewHolder.updateView(demonstration);
return convertView;
}
private static final class ViewHolder {
private final TextView textViewTitle;
private ViewHolder(View convertView) {
textViewTitle = (TextView) convertView.findViewById(android.R.id.text1);
}
private void updateView(Demonstration demonstration) {
textViewTitle.setText(demonstration.title);
}
}
}
}