1 <#-- 2 Copyright 2013 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 --> 16 17 Steps to implement CardStream template: 18 -in template-params.xml.ftl: 19 -add the following templates 20 <template src="base"/> 21 <template src="CardStream"/> 22 -add the following line to common imports 23 <common src="activities"/> 24 <common src="logger"/> 25 26 -Add a Fragment to handle behavior. In your MainActivity.java class, it will reference a Fragment 27 called (yourProjectName)Fragment.java. Create that file in your project, using the "main" source 28 folder instead of "common" or "templates". 29 For instance, if your package name is com.example.foo, create the file 30 src/main/java/com/example/foo/FooFragment.java 31 32 -Now it's time to deal with cards. Implement a method like this in your Fragment to access the CardStream: 33 private CardStreamFragment getCardStream() { 34 if (mCards == null) { 35 mCards = ((CardStream) getActivity()).getCardStream(); 36 } 37 return mCards; 38 } 39 40 41 -Create a instance of Card.Builder with a tag String that *must* be unique among all cards. 42 43 Card.Builder builder = new Card.Builder(UNIQUE_TAG_STRING); 44 45 -Set the properties for your card in the builder. Some properties (title, description, progress type) can also 46 be changed later. 47 48 builder.setTitle(String title) 49 50 -Cards can also have more than one action that is shown as a button at the bottom of the card. 51 All actions *must* be defined through the builder. They can be hidden or shown later again, but they must be defined 52 in the builder before .build() is called. 53 54 -To implement an action, use Builder.addAction with a label, id, type (Neutral/Positive/Negative) and 55 a CardActionCallback. 56 Actions can be distinguished by their id to avoid the use of a large number of unnamed callback instances. 57 For convenience, the tag of the card the action belongs to is also returned in the callback. 58 59 builder.addAction(actionLabel1, 0, Card.ACTION_NEUTRAL, new Card.CardActionCallback() { 60 @Override 61 public void onClick(int cardActionId, String tag) { 62 ... 63 } 64 }); 65 66 67 -After finishing setup process, call Buidler.build() to return a new instance of a Card. 68 69 final Card card = builder.build(activity); 70 71 -Inside your MainActivity.java class, call getCardStream() to get the instance of the CardStreamFragment through 72 which cards are shown on screen. 73 A card needs to be added to the CardStreamFragment first before it can be shown. 74 Cards are identified by their unique tag. 75 76 Card myCard = ... 77 getCardStreamFragment().addCard(myCard); 78 getCardStreamFragment().show(myCard.getTag()); 79 getCardStreamFragment().hide("MyCardTag"); 80 getCardStreamFragment().show("MyCardTag",false); // can't be dismissed by user 81 82 83