Я новичок в этом (переполнение java, android и стека), так что терпите меня.У меня есть несколько продуктов, которые я читаю из своей базы данных, и я сохраняю / добавляю их в свой ArrayList типа product и выводю это в Recycleview.Я также реализовал библиотеку searchview под названием materialsearchview из GitHub, и все работает так, как задумано.Это означает, что изначально у меня есть каждый продукт в списке, и когда я ищу, я получаю новый список с продуктами, которые имеют одинаковые или близкие к названию.Однако после поворота телефона список возвращается к стандартному для каждого продукта, и текст в окне поиска сохраняется.Есть ли способ сохранить новый список продуктов, который был получен в результате поиска после поворота телефона в этом фрагменте?
public class GFragment extends Fragment{
private static final String READ_ALL_PRODUCTS_REQUEST_URL = "****";
RecyclerView recyclerView;
ProductsAdapter adapter;
List<Product> productList;
TextView product_id;
ImageView product_image;
MaterialSearchView searchView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable final Bundle savedInstanceState) {
setHasOptionsMenu(true);
View view = inflater.inflate(R.layout.fragment_products, null);
productList = new ArrayList<>();
recyclerView = (RecyclerView) view.findViewById(R.id.list);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
StringRequest stringRequest = new StringRequest(Request.Method.GET,
READ_ALL_PRODUCTS_REQUEST_URL , new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray products = new JSONArray(response);
for (int i = 0; i < products .length(); i++) {
JSONObject productObject = products.getJSONObject(i);
//storing the variables from database
String id = productObject.getString("product_id");
String title=
productObject.getString("product_title");
Product product= new Product(id);
productList.add(product);
}
adapter = new productAdapter(getActivity(), productList);
recyclerView.setAdapter(adapter);
//Search
searchView = (MaterialSearchView)
getActivity().findViewById(R.id.search_view);
searchView.setOnSearchViewListener(new
MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
}
@Override
public void onSearchViewClosed() {
searchView = (MaterialSearchView)
getActivity().findViewById(R.id.search_view);
adapter = new
productAdapter(getActivity(),productList);
recyclerView.setAdapter(adapter);
}
});
searchView.setOnQueryTextListener(new
MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
if (query != null && !query.isEmpty()) {
List<Product> currentproductList = new
ArrayList<Product>();
for (Productitem : producteList) {
String title = item.getProduct_title();
if (title.contains(query) ||
title.toLowerCase().contains(query) ||
title.toUpperCase().contains(query)) {
currentproductList.add(item);
}
}
adapter = new VideoGameAdapter(getActivity(),
currentproductList);
recyclerView.setAdapter(adapter);
}
else {
adapter = new productAdapter(getActivity(),
productList);
recyclerView.setAdapter(adapter);
}
//Hide Keyboard
View view =
getActivity().findViewById(android.R.id.content);
if (view != null) {
InputMethodManager imm = (InputMethodManager)
getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.
getWindowToken(), 0);
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
if (newText != null && !newText.isEmpty()) {
List<Product> currentproductList = new
ArrayList<Product>();
for (Productitem : productList) {
String title = item.getProduct_title();
if (title.contains(newText) ||
title.toLowerCase().contains(newText) ||
title.toUpperCase().contains(newText)) {
currentproductList.add(item);
}
}
adapter = new productAdapter(getActivity(),
currentproductList);
recyclerView.setAdapter(adapter);
}
else {
adapter = new productAdapter(getActivity(),
productList);
recyclerView.setAdapter(adapter);
}
return true;
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), "Error",
Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(getActivity()).add(stringRequest);
return view
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
MaterialSearchView searchView =
(MaterialSearchView)getActivity().findViewById(R.id.search_view);
final MenuItem item = menu.findItem(R.id.action_search);
searchView.setMenuItem(item);
}
}