java - 安卓 : Using Listfragment instead of Fragment

标签 java android list

我正在制作一个新闻应用程序,在新闻 Activity 中我有一个选项卡 slider ,其中有两个选项卡,称为“新新闻”-“随机或热门新闻”。每个选项卡内容都是 fragment 。(我希望你明白我的意思!)。

但问题是我使用代码来解析此页面内容> http://aliak.xzn.ir/rap/get_all_products.php (我想你找出我使用的网站代码)...

问题是,如果我想在 fragment (而不是 Activity )中显示它,我必须编写以下代码:

public class tab1 extends ListFragment {}

而不是这个:

public class tab1 extends Fragment {}

我的寻呼机适配器有问题,告诉我列表 fragment 不被接受!如果我不使用列表 fragment ,我会有很多错误!

应用程序代码:

我的 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;

    }


}

我的适配器类:

/**
* 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;
}
}

如果您需要更多代码,请告诉我,我会在 2 分钟内回答!

最佳答案

检查您的导入并确保您的 Fragment 和 ListFragment 来自同一个包,即都是 android.support.v4.app.Fragment/ListFragment 或都是 android.app.Fragment/ListFragment。无论您使用哪一种,都必须与您实际的 fragment 类实现保持一致。

关于java - 安卓 : Using Listfragment instead of Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31616158/

相关文章:

java - 使用正则表达式java的字符串操作

android - 为什么 FrameLayout 的 child 全部可见或全部不可见?

android - 未生成 R.java 文件

将列表操作转换为基于索引的算法

java - 为什么 AutoCloseable 是 Closeable 的基本接口(interface)(反之亦然)?

java - 在 csv 文件中搜索列单词并将其替换为另一个值 java

java - 使用 Java 代码停止运行服务器?

android - 将 xml 数据解析为 google map android

list - 了解如何 :sprint and list evaluation works in haskell

c# - ASP.NET MVC 2 : How to contain List<> ID numbering within a "class" UI template?