Я применил recyclerView во фрагменте, в котором я показываю продукт из API, который работает нормально.Я выполнил функцию прослушивания кликов на recyclerView, когда щелкаю по продукту и перехожу к следующему фрагменту.Но когда я перехожу к предыдущему фрагменту, мой recycelerView загружает данные снова и снова.как я могу избежать этого.я хочу чтобы он загружал данные один раз.вот мой код xml code:
<android.support.v7.widget.RecyclerView
android:id="@+id/lsCategory"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginLeft="2dp"
android:layout_marginTop="4dp"
android:layout_marginRight="2dp"
android:background="@color/colorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
вот мой recyclerView код:
public class HomeFragment extends Fragment implements View.OnClickListener {
private List<Category> categories = new ArrayList<>();
private CategoryAdapter categoryAdapter;
public void getInfo(View view){
lsCategory = view.findViewById(R.id.lsCategory);
}
public void setInfo(){
getData();
}
public void getData(){
final StringRequest request = new StringRequest(Request.Method.GET, URLs.homeMainURL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//categories
JSONArray categoryArray = jsonObject.getJSONArray("ListCategories");
setCategoryAdapter(categoryArray);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
VolleySingleton.getInstance(context).addToRequestQueue(request);
}
private void setCategoryAdapter(JSONArray array) {
try {
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
final String name = object.getString("Name");
final int Id = object.getInt("ID");
categories.add(new Category(Id, name));
}
}catch(JSONException e) {
e.printStackTrace();
}
categoryAdapter = new CategoryAdapter(context, categories);
lsCategory.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
lsCategory.setAdapter(categoryAdapter);
}
и вот моя категория Adapter
@Override
public void onBindViewHolder(@NonNull CategoryAdapter.ViewHolder holder, int position) {
holder.setData(categories.get(position));
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textViewItemName;
private int Id ;
public ViewHolder(View itemView) {
super(itemView);
textViewItemName = itemView.findViewById(R.id.tvCategoris);
}
public void setData(final Category category){
textViewItemName.setText(category.getCategoryName());
Id = category.getId();
textViewItemName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ExpandableCategoryList fragment = new ExpandableCategoryList();
Bundle bundle = new Bundle();
bundle.putInt("Id",Id);
fragment.setArguments(bundle);
((MainActivity)context).replaceFragment(fragment,
"TAG",null,false);
}
});
}
}