Стоит следующая задача.
Есть запрос на соединение к БД MYSQL, который выгружает определенные данные в recyclerView.
Если данных нет в БД, то progressBar может вечно крутиться, и если нажать на экран, то приложение вылетает.
В коде используется:
public void JSON_WEB_CALL() {
jsonArrayRequest = new JsonArrayRequest(HTTP_SERVER_URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
JSON_PARSE_DATA_AFTER_WEBCALL(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Error: " + error.getMessage());
Toast.makeText(MainActivity.this, "Не нажимайте на экран во время загрузки данных", Toast.LENGTH_SHORT).show();
}
});
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonArrayRequest);
}
Как я понимаю, сюда onErrorResponse(VolleyError error) необходимо вставить некий таймер. Но, мне не ясно, почему вылетает приложение при нажатии на экран.
Вот код из onCreate
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
GestureDetector gestureDetector = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return true;
}
});
@Override
public boolean onInterceptTouchEvent(RecyclerView Recyclerview, MotionEvent motionEvent) {
SubjectNames.get(RecyclerViewClickedItemPOS);
SubjectNamess.get(RecyclerViewClickedItemPOS);
SubjectNamesss.get(RecyclerViewClickedItemPOS);
SubjectNamessss.get(RecyclerViewClickedItemPOS);
SubjectNamesssss.get(RecyclerViewClickedItemPOS);
SubjectNamesssssss.get(RecyclerViewClickedItemPOS);
SubjectNamessssssss.get(RecyclerViewClickedItemPOS);
ChildView = Recyclerview.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
if (ChildView != null && gestureDetector.onTouchEvent(motionEvent)) {
//Getting RecyclerView Clicked item value.
RecyclerViewClickedItemPOS = Recyclerview.getChildPosition(ChildView);
Intent Intent = new Intent(getApplicationContext(), FormSendGraf.class);
Intent.putExtra("KEY_ID",SubjectNames.get(RecyclerViewClickedItemPOS));
Intent.putExtra("KEY_NUMBER", SubjectNamess.get(RecyclerViewClickedItemPOS));
Intent.putExtra("KEY_NAMEORG", SubjectNamesss.get(RecyclerViewClickedItemPOS));
Intent.putExtra("KEY_ADRORG", SubjectNamessss.get(RecyclerViewClickedItemPOS));
Intent.putExtra("KEY_VID", SubjectNamesssss.get(RecyclerViewClickedItemPOS));
Intent.putExtra("KEY_vidcode", SubjectNamesssssss.get(RecyclerViewClickedItemPOS));
Intent.putExtra("KEY_adrcode", SubjectNamessssssss.get(RecyclerViewClickedItemPOS));
startActivity(Intent);
Toast.makeText(MainActivity.this, SubjectNames.get(RecyclerViewClickedItemPOS), Toast.LENGTH_LONG).show();
}
return false;
}
@Override
public void onTouchEvent(RecyclerView Recyclerview, MotionEvent motionEvent) {
}
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
Вот лог ошибки:
06-02 04:56:04.511 5458-5458/com.androidtutorialpoint.androidlogin E/RecyclerView: No adapter attached; skipping layout
06-02 04:56:04.511 5458-5458/com.androidtutorialpoint.androidlogin D/MainActivity: Error: org.json.JSONException: Value No of type java.lang.String cannot be converted to JSONArray
06-02 04:56:06.061 5458-5458/com.androidtutorialpoint.androidlogin D/AndroidRuntime: Shutting down VM
06-02 04:56:06.071 5458-5458/com.androidtutorialpoint.androidlogin W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4cf7b20)
06-02 04:56:06.071 5458-5458/com.androidtutorialpoint.androidlogin E/AndroidRuntime: FATAL EXCEPTION: main