Skip to content

Instantly share code, notes, and snippets.

@ziginsider
Created December 19, 2017 20:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ziginsider/b1f7946f2e8b827d96d17f3f73c346be to your computer and use it in GitHub Desktop.
Save ziginsider/b1f7946f2e8b827d96d17f3f73c346be to your computer and use it in GitHub Desktop.
package data;
import android.content.Context;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Objects;
import io.github.ziginsider.ideographicapp.R;
/**
* Created by zigin on 29.09.2016.
*/
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final ArrayList<Fragment> mFragmentList = new ArrayList<>();
private final ArrayList<String> mFragmentTitleList = new ArrayList<>();
private final ArrayList<Integer> mFragmentIdList = new ArrayList<>();
Context context;
private ViewPager viewPager;
private TabLayout tabLayout;
public ViewPagerAdapter(FragmentManager manager, Context context, ViewPager viewPager,
TabLayout tabLayout) {
super(manager);
this.context = context;
this.viewPager = viewPager;
this.tabLayout = tabLayout;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
public String getTitle(int position) {
return mFragmentTitleList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title, Integer id) {
int count = mFragmentList.size();
if (count >= 1) {
if (mFragmentIdList.get(count - 1).equals(id)) { //if previous topic id == current
return; // not add
}
}
mFragmentIdList.add(id);
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
//addFragmentAnimation(fragment);
}
public void removeFragment(int position) {
removeTab(position);
Fragment fragment = mFragmentList.get(position);
mFragmentList.remove(fragment);
mFragmentTitleList.remove(position);
mFragmentIdList.remove(position);
destroyFragmentView(viewPager, position, fragment);
notifyDataSetChanged();
}
public View getTabView(final int position) {
View view = LayoutInflater.from(context).inflate(R.layout.custom_tab_item, null);
TextView tabItemName = (TextView) view.findViewById(R.id.text_tab_item);
ImageView tabItemAvatar =
(ImageView) view.findViewById(R.id.image_tab_item);
// ImageButton remove = (ImageButton) view.findViewById(R.id.imageButtonRemove);
// remove.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Log.d("Remove", "Remove");
// removeFragment(position);
// }
// });
tabItemName.setText(mFragmentTitleList.get(position));
//tabItemName.setTextColor(context.getResources().getColor(android.R.color.background_light));
switch (mFragmentTitleList.get(position)) {
case "Man":
tabItemAvatar.setImageResource(R.drawable.ic_man);
break;
case "Impact":
tabItemAvatar.setImageResource(R.drawable.check);
break;
case "Character":
tabItemAvatar.setImageResource(R.drawable.volcano);
break;
case "Work":
tabItemAvatar.setImageResource(R.drawable.ic_work);
break;
case "Attitude":
tabItemAvatar.setImageResource(R.drawable.ic_attitude);
break;
case "Circumstances":
tabItemAvatar.setImageResource(R.drawable.ic_circumstate);
break;
case "Culture":
tabItemAvatar.setImageResource(R.drawable.ic_culture);
break;
case "Economy":
tabItemAvatar.setImageResource(R.drawable.ic_economy);
break;
case "Habitation":
tabItemAvatar.setImageResource(R.drawable.ic_habitation);
break;
case "Ideology":
tabItemAvatar.setImageResource(R.drawable.ic_ideology);
break;
case "Language":
tabItemAvatar.setImageResource(R.drawable.ic_language);
break;
case "Logic":
tabItemAvatar.setImageResource(R.drawable.ic_logic);
break;
case "Nature":
tabItemAvatar.setImageResource(R.drawable.ic_nature);
break;
case "Physics":
tabItemAvatar.setImageResource(R.drawable.ic_physics);
break;
case "Topics":
tabItemAvatar.setImageResource(R.drawable.ic_merge_right);
break;
case "Resources":
tabItemAvatar.setImageResource(R.drawable.ic_resourse);
break;
case "Science":
tabItemAvatar.setImageResource(R.drawable.ic_science);
break;
case "Society":
tabItemAvatar.setImageResource(R.drawable.ic_social);
break;
case "State":
tabItemAvatar.setImageResource(R.drawable.ic_state);
break;
case "Technologies":
tabItemAvatar.setImageResource(R.drawable.ic_techno);
break;
default:
//tabItemAvatar.setImageResource(R.drawable.ic_merge_right);
break;
}
return view;
}
private void destroyFragmentView(ViewGroup container, int position, Object object) {
FragmentManager manager = ((Fragment) object).getFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
}
///
private void addFragmentAnimation(Object object) {
// FragmentManager manager = ((Fragment) object).getFragmentManager();
// FragmentTransaction trans = manager.beginTransaction();
// trans.add((Fragment) object, "ss");
// trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
// trans.commit();
}
private void removeTab(int position) {
if (tabLayout.getChildCount() > 0) {
tabLayout.removeTabAt(position);
}
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment