Sravan Sriram
Sravan Sriram

Reputation: 56

RecyclerView inside fragmen there is no error with my code

I am beginner in android studio,

I have some problem in using RecyclerView inside Fragment.I am unable to find the error in my code.When I run my app it runs but whenever I open particular fragment it shows click me for screen shot,

Add my code is as follows

ListFragment.java

 public class ListFragment extends Fragment {
//this is the JSON Data URL
//make sure you are using the correct ip else it will not work
final String URL_PRODUCTS = "http://192.168.0.12/Api.php";

//a list to store all the products
List<Person> personList;

//the recyclerview
RecyclerView recyclerView;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Toast.makeText(MainActivity.appContext, "Created", Toast.LENGTH_SHORT).show();
}

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_list, container, false);

    Toast.makeText(MainActivity.appContext, "Created in View", Toast.LENGTH_SHORT).show();
    //getting the recyclerview from xml
    recyclerView = (RecyclerView) rootView.findViewById(R.id.recylcerView);



    //initializing the productlist
    personList = new ArrayList<>();

    //this method will fetch and parse json
    //to display it in recyclerview
    loadProducts();
    return rootView;

}

private void loadProducts() {

    /*
    * Creating a String Request
    * The request type is GET defined by first parameter
    * The URL is defined in the second parameter
    * Then we have a Response Listener and a Error Listener
    * In response listener we will get the JSON response as a String
    * */
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_PRODUCTS,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        //converting the string to json array object
                        JSONArray array = new JSONArray(response);

                        //traversing through all the object
                        for (int i = 0; i < array.length(); i++) {

                            //getting product object from json array
                            JSONObject product = array.getJSONObject(i);

                            //adding the product to product list
                            personList.add(new Person(
                                    product.getInt("id"),
                                    product.getString("title"),
                                    product.getString("shortdesc"),
                                    product.getDouble("rating"),
                                    product.getDouble("price"),
                                    product.getString("image")
                            ));
                        }

                        //creating adapter object and setting it to recyclerview
                        PersonsAdapter adapter = new PersonsAdapter(MainActivity.appContext, personList);
                        recyclerView.setAdapter(adapter);
                        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.appContext));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    //adding our stringrequest to queue

    Volley.newRequestQueue(MainActivity.appContext).add(stringRequest);


}


}

the below code I used to open the fragment

fragmentManager.beginTransaction().replace(R.id.frame_container, new ListFragment(), "ListFragment").commit();

Upvotes: 1

Views: 59

Answers (1)

Tomin B Azhakathu
Tomin B Azhakathu

Reputation: 2686

Change the Code

fragmentManager.beginTransaction().replace(R.id.frame_container, new MyListFragment(), "MyListFragment").commit();

The 2nd Parameter should be the Fragments .

The 3rd Paramter is the TAG which is Used to Identify the Fragment.

The 1st Parameter is the FragmeLayout or Container in the Activity where the Fragment is to Be Inflated.

You Cant Use Name List Fragment Since Itz a Default Fragment by Android Itself. Sometimes When You Call ListFragment that function may be Invoked

Upvotes: 1

Related Questions