AliAk
AliAk

Reputation: 139

Android : Using Listfragment instead of Fragment

i'm making a news app which in the news activity i have a tab slider with 2 tabs called , "new news" - "random or top news". which each tabs content are fragment.(i hope u get me!).

but the problem is im using a code to parse the this page content > http://aliak.xzn.ir/rap/get_all_products.php (i think u findout what site code im using)...

the problem is that if i want to show this in fragment(not activity) i have to write this code:

public class tab1 extends ListFragment {}

instead of this :

public class tab1 extends Fragment {}

and i the pager adapter i have problem which tells me the listfragment is not accepted! and if i dont use list fragment i have many errors!

THE CODES FOR APP :

my tab1 fragment ::

public class tab1 extends ListFragment {

    //static final String url_all_products = "http://aliak.xzn.ir/rap/get_all_products.php";
    // Progress Dialog
    private ProgressDialog pDialog;

    // Creating JSON Parser object
    JSONParser jParser = new JSONParser();

    ArrayList<HashMap<String, String>> productsList;

    // url to get all products list
    final String TAG_SUCCESS = "success";
    final String TAG_PRODUCTS = "products";
    final String TAG_PID = "pid";
    final String TAG_NAME = "name";

    // JSON Node names


    // products JSONArray
    JSONArray products = null;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.tab_1, container, false);


        /**
         * Background Async Task to Load all product by making HTTP Request
         */
        class LoadAllProducts extends AsyncTask<String, String, String> {

            /**
             * Before starting background thread Show Progress Dialog
             */
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(getActivity());
                pDialog.setMessage("درحال دريافت اخبار،کمي صبر کنيد!");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }


            /**
             * getting All products from url
             */
            protected String doInBackground(String... args) {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                // getting JSON string from URL
                JSONObject json = jParser.makeHttpRequest("http://aliak.xzn.ir/rap/get_all_products.php", "GET", params);

                // Check your log cat for JSON reponse
                Log.d("All Products: ", json.toString());

                try {
                    // Checking for SUCCESS TAG
                    int success = json.getInt(TAG_SUCCESS);

                    if (success == 1) {
                        // products found
                        // Getting Array of Products
                        products = json.getJSONArray(TAG_PRODUCTS);

                        // looping through All Products
                        for (int i = 0; i < products.length(); i++) {
                            JSONObject c = products.getJSONObject(i);

                            // Storing each json item in variable
                            String id = c.getString(TAG_PID);
                            String name = c.getString(TAG_NAME);

                            // creating new HashMap
                            HashMap<String, String> map = new HashMap<String, String>();

                            // adding each child node to HashMap key => value
                            map.put(TAG_PID, id);
                            map.put(TAG_NAME, name);

                            // adding HashList to ArrayList
                            productsList.add(map);
                        }
                    } else {
                        // no products found
                        // Launch Add New product Activity
                        Intent i = new Intent(getActivity().getApplicationContext(),
                                Main.class);
                        // Closing all previous activities
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(i);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                return null;
            }

            /**
             * After completing background task Dismiss the progress dialog
             * *
             */

            protected void onPostExecute(String file_url) {
                // dismiss the dialog after getting all products
                pDialog.dismiss();
                // updating UI from Background Thread
                getActivity().runOnUiThread(new Runnable() {
                    public void run() {
                        /**
                         * Updating parsed JSON data into ListView
                         * */
                        ListAdapter adapter = new SimpleAdapter(
                                getActivity(), productsList,
                                R.layout.list_item, new String[]{TAG_PID,
                                TAG_NAME},
                                new int[]{R.id.pid, R.id.name});
                        // updating listview
                        setListAdapter(adapter);
                    }
                });

            }


        }


        productsList = new ArrayList<HashMap<String, String>>();


        // Loading products in Background Thread
        new LoadAllProducts().execute();


        return v;

    }


}

my adapter class :

/**
* Created by hp1 on 21-01-2015.
*/
public class ViewPagerAdapter extends FragmentStatePagerAdapter {

CharSequence Titles[]; // This will Store the Titles of the Tabs which   are Going to be passed when ViewPagerAdapter is created
int NumbOfTabs; // Store the number of tabs, this will also be passed when the ViewPagerAdapter is created


// Build a Constructor and assign the passed Values to appropriate values in the class
public ViewPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) {
    super(fm);

    this.Titles = mTitles;
    this.NumbOfTabs = mNumbOfTabsumb;
}

//This method return the fragment for the every position in the View Pager
@Override
public Fragment getItem(int position) {


    if (position == 0) // if the position is 0 we are returning the First tab
    {
        tab1 tab1 = new tab1();
        return tab1;
    } else             // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab
    {
        tab2 tab2 = new tab2();
        return tab2;

    }


}
/*


*/


// This method return the titles for the Tabs in the Tab Strip

@Override
public CharSequence getPageTitle(int position) {
    return Titles[position];
}

// This method return the Number of tabs for the tabs Strip

@Override
public int getCount() {
    return NumbOfTabs;
}
}

IF U NEEDED MORE CODES JUST TELL ME , ILL ANSWER IN 2 MIN TOPS!

Upvotes: 0

Views: 250

Answers (1)

amo
amo

Reputation: 46

check your imports and make sure your Fragment and ListFragment come from the same package, i.e. both android.support.v4.app.Fragment/ListFragment or both android.app.Fragment/ListFragment. Whichever one you use it has to be consistent with your actual fragment class implementations.

Upvotes: 1

Related Questions