i want to parse json data title into my tabLayout. i have two fragment for that, and now i want to get only title from my json data. currently i set manual tab title in MainActivity.java
file. how i can parse json data into my tabLayout?
here is my MainActivity.java code:
public class MainActivity extends AppCompatActivity implements Home.OnFragmentInteractionListener,
Politics.OnFragmentInteractionListener {
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
Toolbar toolbar;
Dialog Developer;
TextView txtclose;
TextView facebook;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(0xFF0F0E37);
tabLayout = (TabLayout)findViewById(R.id.tabLayout);
viewPager = (ViewPager)findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragments(new Home(),"Bangla");
viewPagerAdapter.addFragments(new Politics(),"Politics");
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
Developer = new Dialog(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.home, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.about:
Developer.setContentView(R.layout.about);
txtclose =(TextView) Developer.findViewById(R.id.txtclose);
facebook = (TextView) Developer.findViewById(R.id.facebook);
facebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView facebook = (TextView) findViewById(R.id.facebook);
Intent openFB = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://facebook.com/test/"));
startActivity(openFB);
}
});
txtclose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Developer.dismiss();
}
});
Developer.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Developer.show();
break;
case R.id.share:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
String shareTitile ="test";
String shareLink = "https://play.google.com/store/apps/details?id=test";
intent.putExtra(Intent.EXTRA_SUBJECT, shareTitile);
intent.putExtra(Intent.EXTRA_TEXT, shareLink);
startActivity(Intent.createChooser(intent, "Share test"));
break;
default:
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
}
here is my ViewPagerAdapter.java code:
public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments = (new ArrayList<>());
ArrayList<String> tabTitles = (new ArrayList<>());
public void addFragments(Fragment fragments, String titles){
this.fragments.add(fragments);
this.tabTitles.add(titles);
}
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int possition) {
return fragments.get(possition);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}
}
spouse, my json string is name. i want to parse that name into viewPagerAdapter.addFragments(new Home(),"Bangla");
and viewPagerAdapter.addFragments(new Politics(),"Politics");
. here i want to replace Bangla to retrieve json data name
and also replace Politics automatically from name
. and i want to keep my 2 different fragments
, because of - i will parse different data into both fragments.
i'm parsing josn from url as like https://website.com/api/details.php
here is my json response:
[
{"cid":"1","name":"Bangle"},
{"cid":"2","name":"Politics"},
{"cid":"3","name":"International"}
]
if you not understand my question, just let me know.
note: for better understanding, you can edit my code and post your answer!
thanks in advance.