0

I have a scenario where there are three tabs:-

  1. Products
  2. Jobs
  3. Services

I have parsed the json but I could'nt understand why the data are not getting displayed.

The Code of Swipeable Tabs is given below-

public class Post extends NavDrawerActivity implements ActionBar.TabListener {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    // Tab titles
    private String[] tabs = { "Products", "Jobs", "Services" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWindow().getDecorView()
                .setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); // load
                                                                                    // titles
//      navMenuIcons = getResources()
//              .obtainTypedArray(R.array.nav_drawer_icons);// load icons from
        set(navMenuTitles, navMenuIcons);

        // Initilization
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }

}

The Code of Jobs Fragments is given below:-

public class FragmentJobs extends BaseFragment {

    // Log tag
    private static final String TAG = FragmentProducts.class.getSimpleName();

    private ProgressDialog pDialog;
    private List<Jobs> jobsList = new ArrayList<Jobs>();
    private ListView listView;
    private CustomJobListAdapter jobAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_jobs, container,
                false);
        Popups.showToast("Jobs onCreateView called", getActivity());
        listView = (ListView) rootView.findViewById(R.id.list);

        pDialog = new ProgressDialog(getActivity());
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();

        // changing action bar color
        getActivity().getActionBar().setBackgroundDrawable(
                new ColorDrawable(Color.parseColor("#1b1b1b")));

        // Creating volley request obj
        JsonObjectRequest postReq = new JsonObjectRequest(Request.Method.GET,
                AppConfig.URL_GETPOSTS, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();
                        try {
                            JSONArray jArr = response.getJSONArray("jobs");

                            for (int ia = 0; ia < jArr.length(); ia++) {
                                JSONObject obj = jArr.getJSONObject(ia);
                                Jobs jobs = new Jobs();
                                jobs.setAdded_date(obj.getString("added_date"));
                                jobs.setJob_name(obj.getString("job_name"));
                                jobs.setJob_category(obj
                                        .getString("job_category"));
                                jobs.setThumbnailUrl(obj.getString("job_image"));
                                jobsList.add(jobs);
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d(TAG,
                                " onErrorResponse FragmentJobs"
                                        + error.getMessage());
                        error.printStackTrace();
                        hidePDialog();

                    }
                });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(getActivity(), postReq);
        jobAdapter = new CustomJobListAdapter(this, getActivity(), jobsList);
        listView.setAdapter(jobAdapter);
        return rootView;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }

}

The Code of ProductFragments is given below:-

public class FragmentProducts extends BaseFragment {

    // Log tag
    private static final String TAG = FragmentProducts.class.getSimpleName();

    private ProgressDialog pDialog;
    private List<Products> productList = new ArrayList<Products>();
    private ListView listView;
    private CustomProductListAdapter productAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_products, container,
                false);
        Popups.showToast("Products onCreateView called", getActivity());
        listView = (ListView) rootView.findViewById(R.id.list);

        pDialog = new ProgressDialog(getActivity());
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();

        // changing action bar color
        getActivity().getActionBar().setBackgroundDrawable(
                new ColorDrawable(Color.parseColor("#1b1b1b")));

        // Creating volley request obj
        JsonObjectRequest postReq = new JsonObjectRequest(Request.Method.GET,
                AppConfig.URL_GETPOSTS, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();
                        try {
                            JSONArray jArr = response.getJSONArray("products");

                            for (int ia = 0; ia < jArr.length(); ia++) {
                                JSONObject obj = jArr.getJSONObject(ia);
                                Products posts = new Products();
                                posts.setProduct_name(obj
                                        .getString("product_name"));
                                posts.setThumbnailUrl(obj
                                        .getString("product_image"));
                                posts.setProduct_category(obj
                                        .getString("product_category"));
                                posts.setProduct_price(obj
                                        .getString("product_price"));
                                posts.setDate(obj.getString("added_date"));

                                // adding posts to posts array
                                productList.add(posts);
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d(TAG,
                                " onErrorResponse FragmentJobs"
                                        + error.getMessage());
                        error.printStackTrace();
                        hidePDialog();

                    }
                });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(getActivity(), postReq);

        productAdapter = new CustomProductListAdapter(this, getActivity(),
                productList);
        listView.setAdapter(productAdapter);

        return rootView;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }

}

The code of ServicesFragment is given below:-

public class FragmentServices extends BaseFragment {

    // Log tag
    private static final String TAG = FragmentServices.class.getSimpleName();

    private ProgressDialog pDialog;
    private List<Jobs> jobsList = new ArrayList<Jobs>();
    private List<Services> servicesList = new ArrayList<Services>();
    private ListView listView;
    private CustomServiceListAdapter servicesAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_services, container,
                false);
        Popups.showToast("Service onCreateView called", getActivity());
        listView = (ListView) rootView.findViewById(R.id.list);

        pDialog = new ProgressDialog(getActivity());
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();

        // changing action bar color
        getActivity().getActionBar().setBackgroundDrawable(
                new ColorDrawable(Color.parseColor("#1b1b1b")));

        // Creating volley request obj
        JsonObjectRequest postReq = new JsonObjectRequest(Request.Method.GET,
                AppConfig.URL_GETPOSTS, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        hidePDialog();
                        try {


                            JSONArray jArr = response.getJSONArray("jobs");

                            for (int ia = 0; ia < jArr.length(); ia++) {
                                JSONObject obj = jArr.getJSONObject(ia);
                                Jobs jobs = new Jobs();
                                jobs.setAdded_date(obj.getString("added_date"));
                                jobs.setJob_name(obj.getString("job_name"));
                                jobs.setJob_category(obj
                                        .getString("job_category"));
                                jobs.setThumbnailUrl(obj.getString("job_image"));
                                jobsList.add(jobs);
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d(TAG,
                                " onErrorResponse FragmentServices"
                                        + error.getMessage());
                        error.printStackTrace();
                        hidePDialog();

                    }
                });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(getActivity(), postReq);

        servicesAdapter = new CustomServiceListAdapter(this, getActivity(),
                servicesList);
        listView.setAdapter(servicesAdapter);

        return rootView;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidePDialog();
    }

    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }

}

The sample json is given below:-

{
success: "true",
products: [
{
product_id: "1",
product_code: "P001",
product_name: "Samsung Galaxy",
product_cateory: "Boats",
product_short_desc: "Samsung Galaxy",
product_long_desc: " Samsung Galaxy ",
product_price: "12000.00",
product_stock: "5",
added_date: "2015-03-12 00:00:00",
user_name: "jay23",
product_image: "http://karmickdev.com/eazy/uploads/product_image/medium_thumbs/cce84246260c8681c2576e6d3a09b1d3.jpeg"
},
{
product_id: "2",
product_code: "PRO74789",
product_name: "Test Image Another",
product_cateory: "Jewelry",
product_short_desc: "This is first test product in edit",
product_long_desc: " Long Description for a product ",
product_price: "12000.00",
product_stock: "200",
added_date: "2015-03-12 13:11:51",
user_name: "jay23",
product_image: "http://karmickdev.com/eazy/uploads/product_image/medium_thumbs/47f7b32186bbd62099d53835a66001be.jpeg"
},
{
product_id: "4",
product_code: "PRO63250",
product_name: "Test Product Title",
product_cateory: "Cell Phone",
product_short_desc: "This is short description of product",
product_long_desc: " This is long description of product ",
product_price: "20000.00",
product_stock: "200",
added_date: "2015-03-25 07:21:42",
user_name: "Jayatish",
product_image: "http://karmickdev.com/eazy/uploads/product_image/medium_thumbs/a7938d5fdb42710b6f6ee43f6966c620.JPG"
},
{
product_id: "6",
product_code: "PRO52149",
product_name: "a",
product_cateory: "Bikes",
product_short_desc: "this is nice product",
product_long_desc: " This is long description of product ",
product_price: "2.00",
product_stock: "0",
added_date: "2015-04-03 12:19:33",
user_name: "SouvikSinha",
product_image: "http://karmickdev.com/eazy/uploads/product_image/medium_thumbs/567b58142bf561596d537b42454229ed.jpg"
}
],
jobs: [
{
job_id: "3",
job_code: "JOB43070",
job_name: "Test Job Section",
job_category: "Admin/Office,Biotech/Science",
job_description: " This is second Job for new Test ",
added_date: "2015-03-12 11:18:43",
user_name: "Jay12",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/9ee09665fc31a105a2da2fcc9e95a120.jpg"
},
{
job_id: "4",
job_code: "JOB27838",
job_name: "This job is for Jayatish das",
job_category: "Accounting,Business/Management,Computer Science,Custom Service,Education,Food",
job_description: " Jayatish Das first test job section. ",
added_date: "2015-03-12 11:19:35",
user_name: "Jayatish",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/5b243b957427562cf1f47301934f3b9b.jpg"
},
{
job_id: "5",
job_code: "JOB63638",
job_name: "Sumita didi test job",
job_category: "Accounting,Finance,Admin/Office,Architecture/Engineering",
job_description: " Thsi is first test for Sumita Didi ",
added_date: "2015-03-24 14:30:41",
user_name: "Jayatish",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/1fb9b643205e5f599e8de02ce07a2958.jpg"
},
{
job_id: "6",
job_code: "JOB41434",
job_name: "Indian Railway Recruitment notification 2015 - 338 Apprentice Trainee Vacancy",
job_category: "Art/Media/Design,Computer Science,Custom Service",
job_description: " South Western Railway has issued a recruitment notification for the recruitment of Act Apprentice through recruitment notification South Western Railway Recruitment 2015 L/P.924/Act-App/Vol.XXX/2015 Date.25.03.2015. Candidates who have completed 10th, 12th, ITI can apply for the new recruitment notification Western Railway ",
added_date: "2015-03-27 11:27:01",
user_name: "Jayatish",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/52ca4f77c5ac405d66c41275de53a12b.JPG"
},
{
job_id: "11",
job_code: "JOB01456",
job_name: "new%20add%20job",
job_category: "Accounting,Finance,Art/Media/Design",
job_description: " this%20is%20a%20job%20of%20sleeping%20rate%20$2000%20per%20hour%20 ",
added_date: "2015-03-31 15:20:58",
user_name: "SouvikSinha",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/3c5188e850d4462ee88254b9bf4e435f.JPG"
},
{
job_id: "20",
job_code: "JOB92583",
job_name: "ygjhgjhgfhjmnhf",
job_category: "Accounting,Finance,Art/Media/Design",
job_description: " dtdfyddddli8.fddf8ufdu8f ",
added_date: "2015-04-01 08:04:52",
user_name: "SouvikSinha",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/0ab83ce2aa3699138b500d5e23712f1a.jpg"
},
{
job_id: "21",
job_code: "JOB25216",
job_name: "ygjhgjhgfhjmnhf",
job_category: "Accounting,Finance,Art/Media/Design",
job_description: " dtdfyddddli8.fddf8ufdu8f ",
added_date: "2015-04-01 08:05:06",
user_name: "SouvikSinha",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/4179ef985f337016ba9ba8dd9cb4a544.jpg"
},
{
job_id: "22",
job_code: "JOB81636",
job_name: "ygjhgjhgfhjmnhf",
job_category: "Accounting,Finance,Art/Media/Design",
job_description: " dtdfyddddli8.fddf8ufdu8fhnbvnbvn ",
added_date: "2015-04-01 08:06:53",
user_name: "SouvikSinha",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/86a8fce0d5e290865c00493ef1969e9e.jpg"
},
{
job_id: "23",
job_code: "JOB09814",
job_name: "nbvjvjh",
job_category: "Accounting,Finance,Admin/Office",
job_description: " gkbijbij ",
added_date: "2015-04-01 14:41:46",
user_name: "SouvikSinha",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/0f021bc28e72db6f8ce9b442b44465af.JPG"
},
{
job_id: "24",
job_code: "JOB29694",
job_name: "Test Job Again For Medium Image",
job_category: "Accounting,Finance",
job_description: " This is test for job image in Medium image ",
added_date: "2015-04-08 08:41:41",
user_name: "SouvikSinha",
job_image: "http://karmickdev.com/eazy/uploads/job_image/medium_thumbs/8426cfe6ccb230b520e0867c945312d1.JPG"
}
],
service: [
{
service_id: "1",
service_code: "SER63850",
service_name: "Test Service Section",
service_category: "Automotive,Gardening",
service_description: " This is first test section in service page ",
added_date: "2015-03-25 10:32:12",
user_name: "Jayatish",
service_image: "http://karmickdev.com/eazy/uploads/service_image/medium_thumbs/f16cbc8d61069ccef049ea8f59603c2f.jpeg"
},
{
service_id: "2",
service_code: "SERV0098",
service_name: "Serv Title",
service_category: "Computer,Financial,Household,Labor",
service_description: " Desk Service ",
added_date: "2015-03-26 00:00:00",
user_name: "Jayatish",
service_image: "http://karmickdev.com/eazy/uploads/service_image/medium_thumbs/a1bf16b788104a09243cc552e84d0711.jpeg"
},
{
service_id: "4",
service_code: "SER09294",
service_name: "This is first service section",
service_category: "Automotive,Computer,Gardening,Financial,Household,Pet",
service_description: " This is the first service test section for new customer. ",
added_date: "2015-03-27 13:48:04",
user_name: "Jayatish",
service_image: "http://karmickdev.com/eazy/uploads/service_image/medium_thumbs/a7ef640334755861985e5f816990f3d5.jpg"
},
{
service_id: "5",
service_code: "SER89410",
service_name: "new",
service_category: "Beauty,Computer",
service_description: " ggfgxfgxgfxgxcggxcggcxgvxcvxcvcxvcxvcxvxcvxvxvxvvcxxvvcvxv ",
added_date: "2015-04-03 12:01:53",
user_name: "SouvikSinha",
service_image: "http://karmickdev.com/eazy/uploads/service_image/medium_thumbs/c985904dc3068c245e5a9946f55159a4.jpg"
},
{
service_id: "6",
service_code: "SER92767",
service_name: "new",
service_category: "Beauty,Computer,Gardening,Household",
service_description: " ggfgxfgxgfxgxcggxcggcxgvxcvxcvcxvcxvcxvxcvxvxvxvvcxxvvcvxv ",
added_date: "2015-04-03 12:02:02",
user_name: "SouvikSinha",
service_image: "http://karmickdev.com/eazy/uploads/service_image/medium_thumbs/765f295c99661d276b1bf80d9a7991fe.jpg"
},
{
service_id: "7",
service_code: "SER43296",
service_name: "ffdghdh",
service_category: "Automotive,Beauty,Computer,Gardening,Household,Labor,Legal,Lessons",
service_description: " fgfdghdghfghdfhhdfhdhdhhfhfdhfdhdfhfdhfdhdfhfddfhfdhddhfghdhdhdhdhdghghghhddhghgdhd ",
added_date: "2015-04-03 12:11:11",
user_name: "SouvikSinha",
service_image: "http://karmickdev.com/eazy/uploads/service_image/medium_thumbs/191979c862d368518b8e52b888b4b934.jpg"
}
]
}

The above json is a json array where i have to pull the specified array and place in the specified tabs

I cant find out my mistake. I am not getting the data. Guys please help

Priyanka
  • 47
  • 7

1 Answers1

0

you provided Json does not pass JSonLint validation, could be the cause of data not being loaded.

http://jsonlint.com

Parse error on line 1: { success: "true",
-----^ Expecting 'STRING', '}'

all your json tags should be enclosed between these things: " "

ex:

"success" : "true"

also, i suggest using another system for checking the retrieval of your data, and refreshing your listview adapter, a Adapter.notifyDataSetChanged() could do the trick after adding the objects to the list, but take a look to EventBus from greenrobot, it's a great library to easily manage data retrieval events.

Eventbus link

also, in services you're still using the jobs loop.

try {


                        JSONArray jArr = response.getJSONArray("jobs");

                        for (int ia = 0; ia < jArr.length(); ia++) {
                            JSONObject obj = jArr.getJSONObject(ia);
                            Jobs jobs = new Jobs();
                            jobs.setAdded_date(obj.getString("added_date"));
                            jobs.setJob_name(obj.getString("job_name"));
                            jobs.setJob_category(obj
                                    .getString("job_category"));
                            jobs.setThumbnailUrl(obj.getString("job_image"));
                            jobsList.add(jobs);
                        }
CptEric
  • 897
  • 9
  • 23
  • Thanks for the reply but in ios the parsed data is coming in listview. – Priyanka Apr 09 '15 at 15:23
  • could be because of parsing indulgency, but if the file you posted is 100% what your file contains, most json online parsers will tell you there are parsing errors, and could be one of the causes. could you run the app and post here the whole logcat? – CptEric Apr 09 '15 at 15:29