SwipeRefreshLayout обновляющий список RecyclerView c БД на PhpMyAdmin
Поместил RecyclerView в SwipeRefreshLayout, но не знаю как правильно написать в Javaфайле команду, чтобы при свайпе вверх, список обновлялся, то есть, на PhpMyAdmin в БД я изменил какую-нибудь надпись, чтобы эта надпись обновилась у меня в приложении, нужно полностью пере зайти в приложение. Мне нужно чтобы если я поменял данные в БД, простым свайпом мог обновить список в RecyclerView.
public class MainActivity extends AppCompatActivity{
List<ItemSkatingRinkSchedule_2> mSkatingRinkScheduleList;
RecyclerView recyclerView;
RecyclerView.LayoutManager recyclerViewlayoutManager;
RecyclerView.Adapter recyclerViewadapter;
String HTTP_JSON_URL = "http://qqqqqqqqq.mcdir.ru/Subjects.php";
String GET_JSON_FROM_SERVER_NUMBER = "session_number";
String GET_JSON_FROM_SERVER_START = "session_start";
String GET_JSON_FROM_SERVER_END = "session_end";
String GET_JSON_FROM_SERVER_WEEKDAYS = "weekdays";
String GET_JSON_FROM_SERVER_WEEKDAYS_AND_HOLIDAYS = "weekends_and_holidays";
JsonArrayRequest jsonArrayRequest;
RequestQueue requestQueue;
View ChildView;
int GetItemPosition;
ArrayList<String> SubjectNames;
private SwipeRefreshLayout mSwipeRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSkatingRinkScheduleList = new ArrayList<>();
recyclerView = findViewById(R.id.recyclerView1);
recyclerView.setHasFixedSize(true);
recyclerViewlayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(recyclerViewlayoutManager);
SubjectNames = new ArrayList<>();
JSON_DATA_WEB_CALL();
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
final GestureDetector gestureDetector = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return true;
}
});
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView Recyclerview, @NonNull MotionEvent motionEvent) {
ChildView = Recyclerview.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
if (ChildView != null && gestureDetector.onTouchEvent(motionEvent)) {
GetItemPosition = Recyclerview.getChildAdapterPosition(ChildView);
}
return false;
}
@Override
public void onTouchEvent(@NonNull RecyclerView Recyclerview, @NonNull MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
mSwipeRefreshLayout = findViewById(R.id.ref);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
JSON_DATA_WEB_CALL();
mSwipeRefreshLayout.setRefreshing(false);
}
});
}
public void JSON_DATA_WEB_CALL() {
jsonArrayRequest = new JsonArrayRequest(HTTP_JSON_URL,this::JSON_PARSE_DATA_AFTER_WEBCALL,
error -> {
});
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonArrayRequest);
}
public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array) {
for (int i = 0; i < array.length(); i++) {
ItemSkatingRinkSchedule_2 GetDataAdapter2 = new ItemSkatingRinkSchedule_2();
JSONObject json;
try {
json = array.getJSONObject(i);
GetDataAdapter2.set_session_number(json.getString(GET_JSON_FROM_SERVER_NUMBER));
GetDataAdapter2.set_session_start(json.getString(GET_JSON_FROM_SERVER_START));
GetDataAdapter2.set_session_end(json.getString(GET_JSON_FROM_SERVER_END));
GetDataAdapter2.set_weekdays(json.getString(GET_JSON_FROM_SERVER_WEEKDAYS));
GetDataAdapter2.set_weekends_and_holidays(json.getString(GET_JSON_FROM_SERVER_WEEKDAYS_AND_HOLIDAYS));
SubjectNames.add(json.getString(GET_JSON_FROM_SERVER_NUMBER));
SubjectNames.add(json.getString(GET_JSON_FROM_SERVER_START));
SubjectNames.add(json.getString(GET_JSON_FROM_SERVER_END));
SubjectNames.add(json.getString(GET_JSON_FROM_SERVER_WEEKDAYS));
SubjectNames.add(json.getString(GET_JSON_FROM_SERVER_WEEKDAYS_AND_HOLIDAYS));
} catch (JSONException e) {
e.printStackTrace();
}
mSkatingRinkScheduleList.add(GetDataAdapter2);
}
recyclerViewadapter = new AdapterSkatingRinkSchedule_2((ArrayList<ItemSkatingRinkSchedule_2>) mSkatingRinkScheduleList);
recyclerView.setAdapter(recyclerViewadapter);
Objects.requireNonNull(recyclerView.getAdapter()).notifyDataSetChanged();
}
}