Reputation: 56
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
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