Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,8 @@ dependencies {
implementation "com.android.support:appcompat-v7:${support_library}"
implementation "com.android.support:design:${support_library}"
implementation "com.android.support:support-v4:${support_library}"
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.picasso:picasso:2.5.2'

}
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
Expand Down
39 changes: 30 additions & 9 deletions app/src/main/java/com/taboola/taboolasample/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,27 @@
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
import com.taboola.taboolasample.samples.ConfigFragment;
import com.taboola.taboolasample.samples.DynamicSampleFragment;
import com.taboola.taboolasample.samples.EndlessFeedSampleFragment;
import com.taboola.taboolasample.samples.ListViewSampleFragment;
import com.taboola.taboolasample.samples.RecyclerViewSampleFragment;
import com.taboola.taboolasample.samples.XmlSampleFragment;
import com.taboola.taboolasample.samples.tabs.TabsSampleFragment;

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
drawer.addDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Expand All @@ -37,7 +44,7 @@ protected void onCreate(Bundle savedInstanceState) {

@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
Expand Down Expand Up @@ -66,17 +73,31 @@ public boolean onNavigationItemSelected(MenuItem item) {
break;

case R.id.endless_feed_sample:
fragmentToOpen = new EndlessFeedFragment();
fragmentToOpen = new EndlessFeedSampleFragment();
break;

case R.id.rv_sample:
fragmentToOpen = new RecyclerViewSampleFragment();
break;

case R.id.lv_sample:
fragmentToOpen = new ListViewSampleFragment();
break;

case R.id.view_pager_sample:
fragmentToOpen = new TabsSampleFragment();
break;

default:
return false;
return false;
}

transaction.replace(R.id.container_main, fragmentToOpen);
transaction.commit();

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.taboola.taboolasample.adapters;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

public class FragmentsAdapter<T extends Fragment> extends FragmentStatePagerAdapter {

private final List<T> mFragments = new ArrayList<>();


public FragmentsAdapter(FragmentManager fm) {
super(fm);
}

public void clear() {
mFragments.clear();
}

public void addFragment(T fragment) {
mFragments.add(fragment);
}

@Override
public T getItem(int position) {
return mFragments.get(position);
}

@Override
public int getCount() {
return mFragments.size();
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
FragmentManager manager = ((Fragment) object).getFragmentManager();
if (manager != null) {
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
}

super.destroyItem(container, position, object);
}

@Override
public CharSequence getPageTitle(int position) {
return ("page " + position);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package com.taboola.taboolasample.adapters;

import android.graphics.Color;
import android.support.annotation.IntDef;

import java.lang.annotation.Retention;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import static java.lang.annotation.RetentionPolicy.SOURCE;

public class ListItems {

public abstract static class FeedListItem {

@Retention(SOURCE)
@IntDef({ItemType.TABOOLA_ITEM, ItemType.RANDOM_ITEM,})

public @interface ItemType {
int TABOOLA_ITEM = 1;
int RANDOM_ITEM = 2;
}

@ItemType
int type;

FeedListItem(@ItemType int type) {
this.type = type;
}
}

public static class TaboolaView extends FeedListItem {

TaboolaView() {
super(ItemType.TABOOLA_ITEM);
}
}

public static class RandomItem extends FeedListItem {

final int color;
final String randomText;

RandomItem(int color) {
super(ItemType.RANDOM_ITEM);
this.color = color;
randomText = getRandomText();
}

private String getRandomText() {
Random random = new Random();
int newValue = random.nextInt();

switch (newValue % 10) {

default:
case 1:
case 9:
return "Jack Tar me keel lanyard grog doubloon gabion furl Yellow Jack flogging. Booty galleon cable Sail ho lugsail yard draught driver run a rig draft. Wench nipperkin mutiny bowsprit lad Arr draft overhaul salmagundi bilged on her anchor.";

case 2:
case 8:
return "SFire in the hole grapple plunder matey swing the lead clipper hang the jib skysail handsomely Blimey. Sink me poop deck pressgang hands Yellow Jack lugger haul wind run a rig Sea Legs walk the plank. Boatswain fluke pinnace salmagundi nipper plunder landlubber or just lubber gibbet barque topgallant";

case 3:
case 7:
return "Transom bilged on her anchor deadlights Chain Shot topgallant doubloon lugger code of conduct man-of-war spanker. Cackle fruit ahoy fore walk the plank main sheet crimp ye nipper coffer Sea Legs. Bowsprit gangplank long boat gangway strike colors parley gibbet jib take a caulk fathom.";

case 4:
case 6:
return "Shrimps paste has to have a sun-dried, puréed carrots component. Herring tastes best with fish sauce and lots of cinnamon. Flatten a dozen oysters, tuna, and cumin in a large bucket over medium heat, warm for a handfull minutes and whisk with some squid.";

case 5:
return "Stern capstan chantey sloop Sea Legs ye Jack Tar rigging sheet booty. Jack Tar jib hogshead grog belay cable keelhaul sloop Shiver me timbers jolly boat. Grog blossom lanyard handsomely chandler run a rig dance the hempen jig Spanish Main landlubber or just lubber measured fer yer chains topsail.";

}
}
}

public static List<FeedListItem> getGeneratedData() {
List<FeedListItem> randomImages = new ArrayList<>();
randomImages.add(new RandomItem(Color.GRAY));
randomImages.add(new RandomItem(Color.RED));
randomImages.add(new RandomItem(Color.BLACK));
randomImages.add(new RandomItem(Color.MAGENTA));
randomImages.add(new RandomItem(Color.BLUE));
randomImages.add(new RandomItem(Color.YELLOW));
randomImages.add(new RandomItem(Color.GREEN));
randomImages.add(new RandomItem(Color.DKGRAY));
Collections.shuffle(randomImages);
randomImages.add(new TaboolaView());
return randomImages;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
package com.taboola.taboolasample.adapters;

import android.content.Context;
import android.support.annotation.NonNull;
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.taboola.android.TaboolaWidget;
import com.taboola.taboolasample.R;
import com.taboola.taboolasample.utils.Utils;

import java.util.List;

public class ListViewAdapter extends BaseAdapter {

private final List<ListItems.FeedListItem> mData;

private TaboolaWidget mTaboolaWidget;

public ListViewAdapter(Context context) {
mData = ListItems.getGeneratedData();
mTaboolaWidget = new TaboolaWidget(context);
Utils.buildTaboolaWidget(context, mTaboolaWidget);
}


@Override
public @ListItems.FeedListItem.ItemType
int getItemViewType(int position) {
ListItems.FeedListItem item = getItem(position);
return item.type;
}


@Override
public int getCount() {
return mData.size();
}

@Override
public ListItems.FeedListItem getItem(int position) {
return mData.get(position);
}

@Override
public long getItemId(int position) {
return 0;
}


ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {

case ListItems.FeedListItem.ItemType.TABOOLA_ITEM:
return new ViewHolderTaboola(mTaboolaWidget, viewType);

default:
case ListItems.FeedListItem.ItemType.RANDOM_ITEM:
View appCompatImageView = LayoutInflater.from(parent.getContext()).inflate(R.layout.random_item, parent, false);
return new RandomImageViewHolder(appCompatImageView, viewType);
}
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

@ListItems.FeedListItem.ItemType int viewType = getItemViewType(position);
ViewHolder viewHolder;
if (convertView == null || convertView.getTag() == null || ((ViewHolder) convertView.getTag()).mViewType != viewType) {
viewHolder = onCreateViewHolder(parent, viewType);
convertView = viewHolder.mView;
} else {
viewHolder = (ViewHolder) convertView.getTag();
}


if (viewType == ListItems.FeedListItem.ItemType.RANDOM_ITEM) {
RandomImageViewHolder vh = (RandomImageViewHolder) viewHolder;
ListItems.FeedListItem item = getItem(position);
ListItems.RandomItem randomItem = (ListItems.RandomItem) item;
final ImageView imageView = vh.imageView;
imageView.setBackgroundColor(randomItem.color);
vh.textView.setText(randomItem.randomText);
}


return convertView;
}


public static class RandomImageViewHolder extends ViewHolder {
private final ImageView imageView;
private final TextView textView;

RandomImageViewHolder(View view, int viewType) {
super(view, viewType);
imageView = view.findViewById(R.id.feed_item_iv);
textView = view.findViewById(R.id.feed_item_tv);
}
}

static abstract class ViewHolder {

private final @ListItems.FeedListItem.ItemType
int mViewType;
View mView;

ViewHolder(View view, int viewType) {
mView = view;
this.mViewType = viewType;
view.setTag(this);
}
}

public static class ViewHolderTaboola extends ViewHolder {

ViewHolderTaboola(View view, int viewType) {
super(view, viewType);
}
}

}
Loading