package com.marshalchen.common.demoofui.sampleModules;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.Toast;
import com.dexafree.materialList.cards.BasicButtonsCard;
import com.dexafree.materialList.cards.BasicImageButtonsCard;
import com.dexafree.materialList.cards.BasicListCard;
import com.dexafree.materialList.cards.BigImageButtonsCard;
import com.dexafree.materialList.cards.BigImageCard;
import com.dexafree.materialList.cards.OnButtonPressListener;
import com.dexafree.materialList.cards.SimpleCard;
import com.dexafree.materialList.cards.SmallImageCard;
import com.dexafree.materialList.cards.WelcomeCard;
import com.dexafree.materialList.controller.OnDismissCallback;
import com.dexafree.materialList.controller.RecyclerItemClickListener;
import com.dexafree.materialList.model.Card;
import com.dexafree.materialList.model.CardItemView;
import com.dexafree.materialList.view.MaterialListView;
import com.marshalchen.common.demoofui.R;
public class MaterialListViewActivity extends ActionBarActivity {
private Context mContext;
private MaterialListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.material_list_activity_main);
// Save a reference to the context
mContext = this;
// Bind the MaterialListView to a variable
mListView = (MaterialListView) findViewById(R.id.material_listview);
// Fill the array with mock content
fillArray();
// Set the dismiss listener
mListView.setOnDismissCallback(new OnDismissCallback() {
@Override
public void onDismiss(Card card, int position) {
// Recover the tag linked to the Card
String tag = card.getTag().toString();
// Show a toast
Toast.makeText(mContext, "You have dismissed a "+tag, Toast.LENGTH_SHORT).show();
}
});
// Add the ItemTouchListener
mListView.addOnItemTouchListener(new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(CardItemView view, int position) {
Log.d("CARD_TYPE", view.getTag().toString());
}
@Override
public void onItemLongClick(CardItemView view, int position) {
Log.d("LONG_CLICK", view.getTag().toString());
}
});
}
private void fillArray() {
for (int i = 0; i < 35; i++) {
Card card = getRandomCard(i);
mListView.add(card);
}
}
private Card getRandomCard(final int position) {
String title = "Card number " + (position + 1);
String description = "Lorem ipsum dolor sit amet";
int type = position % 6;
SimpleCard card;
Drawable icon;
switch (type) {
case 0:
card = new SmallImageCard(this);
card.setDescription(description);
card.setTitle(title);
card.setDrawable(R.drawable.ic_launcher);
card.setDismissible(true);
card.setTag("SMALL_IMAGE_CARD");
return card;
case 1:
card = new BigImageCard(this);
card.setDescription(description);
card.setTitle(title);
//card.setDrawable(R.drawable.photo);
card.setDrawable("https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark.png");
card.setTag("BIG_IMAGE_CARD");
return card;
case 2:
card = new BasicImageButtonsCard(this);
card.setDescription(description);
card.setTitle(title);
card.setDrawable(R.drawable.test_back);
card.setTag("BASIC_IMAGE_BUTTON_CARD");
((BasicImageButtonsCard) card).setLeftButtonText("LEFT");
((BasicImageButtonsCard) card).setRightButtonText("RIGHT");
if (position % 2 == 0)
((BasicImageButtonsCard) card).setDividerVisible(true);
((BasicImageButtonsCard) card).setOnLeftButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Toast.makeText(mContext, "You have pressed the left button", Toast.LENGTH_SHORT).show();
((SimpleCard) card).setTitle("CHANGED ON RUNTIME");
}
});
((BasicImageButtonsCard) card).setOnRightButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Toast.makeText(mContext, "You have pressed the right button on card " + ((SimpleCard) card).getTitle(), Toast.LENGTH_SHORT).show();
mListView.remove(card);
}
});
card.setDismissible(true);
return card;
case 3:
card = new BasicButtonsCard(this);
card.setDescription(description);
card.setTitle(title);
card.setTag("BASIC_BUTTONS_CARD");
((BasicButtonsCard) card).setLeftButtonText("LEFT");
((BasicButtonsCard) card).setRightButtonText("RIGHT");
((BasicButtonsCard) card).setRightButtonTextColorRes(R.color.accent_material_dark);
if (position % 2 == 0)
((BasicButtonsCard) card).setDividerVisible(true);
((BasicButtonsCard) card).setOnLeftButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Toast.makeText(mContext, "You have pressed the left button", Toast.LENGTH_SHORT).show();
}
});
((BasicButtonsCard) card).setOnRightButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Toast.makeText(mContext, "You have pressed the right button", Toast.LENGTH_SHORT).show();
}
});
card.setDismissible(true);
return card;
case 4:
card = new WelcomeCard(this);
card.setTitle("Welcome Card");
card.setDescription("I am the description");
card.setTag("WELCOME_CARD");
((WelcomeCard) card).setSubtitle("My subtitle!");
((WelcomeCard) card).setButtonText("Okay!");
((WelcomeCard) card).setOnButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Toast.makeText(mContext, "Welcome!", Toast.LENGTH_SHORT).show();
}
});
if (position % 2 == 0)
((WelcomeCard) card).setBackgroundColorRes(R.color.background_material_dark);
card.setDismissible(true);
return card;
case 5:
card = new BasicListCard(this);
card.setTitle("List Card");
card.setDescription("Take a list");
BasicListAdapter adapter = new BasicListAdapter(this);
adapter.add("Text1");
adapter.add("Text2");
adapter.add("Text3");
card.setTag("LIST_CARD");
((BasicListCard) card).setAdapter(adapter);
/*
((BasicListCard) card).setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Do what ever you want...
}
});
*/
card.setDismissible(true);
return card;
default:
card = new BigImageButtonsCard(this);
card.setDescription(description);
card.setTitle(title);
card.setDrawable(R.drawable.test);
card.setTag("BIG_IMAGE_BUTTONS_CARD");
((BigImageButtonsCard) card).setLeftButtonText("ADD CARD");
((BigImageButtonsCard) card).setRightButtonText("RIGHT BUTTON");
if (position % 2 == 0) {
((BigImageButtonsCard) card).setDividerVisible(true);
}
((BigImageButtonsCard) card).setOnLeftButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Log.d("ADDING", "CARD");
mListView.add(generateNewCard());
Toast.makeText(mContext, "Added new card", Toast.LENGTH_SHORT).show();
}
});
((BigImageButtonsCard) card).setOnRightButtonPressedListener(new OnButtonPressListener() {
@Override
public void onButtonPressedListener(View view, Card card) {
Toast.makeText(mContext, "You have pressed the right button", Toast.LENGTH_SHORT).show();
}
});
card.setDismissible(true);
return card;
}
}
private Card generateNewCard() {
SimpleCard card = new BasicImageButtonsCard(this);
card.setDrawable(R.drawable.test_back1);
card.setTitle("I'm new");
card.setDescription("I've been generated on runtime!");
card.setTag("BASIC_IMAGE_BUTTONS_CARD");
return card;
}
private void addMockCardAtStart(){
BasicImageButtonsCard card = new BasicImageButtonsCard(this);
card.setDrawable(R.drawable.test_back2);
card.setTitle("Hi there");
card.setDescription("I've been added on top!");
card.setLeftButtonText("LEFT");
card.setRightButtonText("RIGHT");
card.setTag("BASIC_IMAGE_BUTTONS_CARD");
card.setDismissible(true);
mListView.addAtStart(card);
}
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.main, menu);
// return true;
// }
//
// @Override
// public boolean onOptionsItemSelected(MenuItem item) {
// switch(item.getItemId()){
// case R.id.action_clear:
// mListView.clear();
// break;
// case R.id.action_add_at_start:
// addMockCardAtStart();
// break;
// }
// return super.onOptionsItemSelected(item);
// }
}
class BasicListAdapter extends ArrayAdapter<String> {
public BasicListAdapter(final Context context) {
super(context, android.R.layout.simple_list_item_1);
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.material_list_view_list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.mCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.mCheckBox.setText(getItem(position));
/*
viewHolder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) {
// Do something awesome!
}
});
*/
return convertView;
}
static class ViewHolder {
CheckBox mCheckBox;
}
}