안녕하세요
tablayout이랑 viewpager를 이용해서 화면을 구성중인데,
화면 구성은 성공했는데 이 안에 데이터를 어떻게 맵핑하는지를 잘 모르겠습니다.
일단 실험용으로 하나 만들어보려구요.
먼저 mpAndroidchart를 이용해서 차트를 그리는 함수입니다. 하드코딩된거에요.
public void sexRateChart(){
PieChart sexRateChart;
sexRateChart = findViewById(R.id.sexRateChart);
sexRateChart.setUsePercentValues(true);
sexRateChart.getDescription().setEnabled(true);
sexRateChart.setExtraOffsets(5f, 10f, 5f, 5f);
sexRateChart.setDragDecelerationFrictionCoef(0.95f);
sexRateChart.setDrawHoleEnabled(false);
sexRateChart.setHoleColor(Color.BLACK);
sexRateChart.setTransparentCircleRadius(61f);
ArrayList sexValues = new ArrayList();
sexValues.add(new PieEntry(63.0F, "남성"));
sexValues.add(new PieEntry(37.0F, "여성"));
sexRateChart.animateY(2000, Easing.EaseInOutCubic);
PieDataSet sexDataSet = new PieDataSet((List)sexValues, "성별");
sexDataSet.setSliceSpace(3.0F);
sexDataSet.setSelectionShift(2.0F);
PieData sexData = new PieData((IPieDataSet)sexDataSet);
sexData.setValueTextSize(10.0F);
sexData.setValueTextColor(Color.BLACK);
sexRateChart.setData(sexData);
sexRateChart.invalidate();
}
이 친구를 각 탭마다 설정해주고 싶습니다. 현재 탭 구성은 다음과 같습니다.
화면 구성
ResultActivity.java
public class ResultActivityy extends AppCompatActivity {
private ViewPager mViewPager;
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result2);
mViewPager = findViewById(R.id.layout_viewPager);
setupViewPager(mViewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.layout_tab);
tabLayout.setupWithViewPager(mViewPager);
}
public void setupViewPager(ViewPager viewPager) {
adapter.addFragment(new FragmentTotal(), "종합");
adapter.addFragment(new FragmentKeyword(), "키워드 분석");
adapter.addFragment(new FragmentEmotion(), "감정 분석");
adapter.addFragment(new FragmentEtc(), "기타 정보");
viewPager.setAdapter(adapter);
}
}
FragmentTotal (종합 탭 프래그먼트)
public class FragmentTotal extends Fragment {
ViewPager viewPager;
public void Fragment_Total(){
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_total, container, false);
return view;
}
}
ViewPagerAdapter (어댑터)
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public void addFragment(Fragment fragment, String title){
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position) { return mFragmentList.get(position); }
@Override
public int getCount() {
return mFragmentList.size() ;
}
}
이렇게 짜여진 상태입니다. fragment xml은 관계없어서 따로 첨부하지 않았습니다.
'종합' 탭을 눌렀을 때 상단의 sexRateChart() 함수를 호출해서 데이터가 셋팅되게끔 하고 싶은데, 어디다 배치를 해야될지 잘 모르겠습니다.
한번만 도와주시면 감사하겠습니다 ㅠㅠ