簡體   English   中英

從json數據android設置tabLayout標題

[英]set tabLayout title from json data android

我想將 json 數據標題解析到我的 tabLayout 中。 我有兩個片段,現在我只想從我的 json 數據中獲取標題。 目前我在MainActivity.java文件中設置了手動選項卡標題。 我如何將 json 數據解析到我的 tabLayout 中?

這是我的 MainActivity.java 代碼:

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) {

    }
}

這是我的 ViewPagerAdapter.java 代碼:

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);
    }
}

配偶,我的json字符串是名字。 我想將該名稱解析為viewPagerAdapter.addFragments(new Home(),"Bangla"); viewPagerAdapter.addFragments(new Politics(),"Politics"); . 在這里,我想替換 Bangla 以檢索 json 數據name並從name自動替換 Politics。 我想保留我的 2 個不同的fragments ,因為 - 我會將不同的數據解析為兩個片段。

我正在從 url 解析 josn,就像https://website.com/api/details.php

這是我的 json 響應:

[
{"cid":"1","name":"Bangle"},
{"cid":"2","name":"Politics"},
{"cid":"3","name":"International"}
]

如果您不明白我的問題,請告訴我。

注意:為了更好地理解,您可以編輯我的代碼並發布您的答案!

提前致謝。

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);
        
        String jsonStr = ""; // this variable should contain the JSON response from url, assing json response to this variable. 

        JSONArray jsonarray = new JSONArray(jsonStr);
        for (int i = 0; i < jsonarray.length(); i++) {
            JSONObject jsonobject = jsonarray.getJSONObject(i);
            String name = jsonobject.getString("name");
            // If you have only two fragments then simply take a count variable other wise you can save this "name" in string array.
            
                if(i==0){
                viewPagerAdapter.addFragments(new Home(),name);
                }else if(i == 1){
                viewPagerAdapter.addFragments(new Politics(),name);
                } 
        }


        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) {

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM