Я заполняю представление переработчика из удаленной базы данных.
Вид рециркулятора внутри фрагмента.
При первой загрузке фрагмента в окне перезапуска отображаются все элементы.
Когда пользователь нажимает на элемент, загружается другой фрагмент.
Затем, если пользователь нажимает кнопку "Назад", в окне повторного просмотра отображаются все элементы, но теперь два раза. После последнего элемента все элементы отображаются снова.
Я включил эти две строки в функцию, которая загружает данные из удаленной базы данных:
marcas.clear();// public List<Marca> marcas;
adapter.notifyDataSetChanged();// private MarcaAdapter adapter;
Но я не так делаю?
EDIT
In OnCreate
/**
* Showing Swipe Refresh animation on activity create
* As animation won't start on onCreate, post runnable is used
*/
mSwipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
marcas.clear();
adapter.notifyDataSetChanged();
}
});
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
marcas = new ArrayList<>();
gridLayout = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(gridLayout);
adapter = new MarcaAdapter(getActivity(), marcas);
recyclerView.setAdapter(adapter);
// marcas.clear();
getDirectoriosFromDB(0);//LLAMADA 1
Для загрузки данных:
private void getDirectoriosFromDB(int id) {
marcas.clear();
adapter.notifyDataSetChanged();
AsyncTask<Integer, Void, Void> asyncTask = new AsyncTask<Integer, Void, Void>() {
@Override
protected Void doInBackground(Integer... addressesIds) {
// Log.d("HOLA PERFIL", "UID REGISTRADO ANTES DE CARGAR REECYCLER: " + user_id);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://...marcas_todas.php")
.build();
try {
Log.d("HOLA ADDRESSES", "DIRECCION LEIDA:cargando datos en getdirectorios INICIO ARRAY" );
okhttp3.Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
Log.d("HOLA ADDRESSES", "DIRECCION LEIDA:cargando datos en getdirectorios " +array);
Log.d("HOLA ADDRESSES", "DIRECCION LEIDA: " + i);
Marca marca = new Marca(object.getInt("id_car_make"),
object.getString("name")
);
marcas.add(marca);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter.notifyDataSetChanged();
mSwipeRefreshLayout.setRefreshing(false);
}
};
asyncTask.execute(id);
}