У меня есть адаптер, в котором много предметов. Когда я нажимаю на одну из них, я читаю данные с некоторого Json, который связан с конкретным элементом.
Я использую следующий код:
DiscoverBookAdapter.OnDiscoverBookClickListener listener = new DiscoverBookAdapter.OnDiscoverBookClickListener() {
@Override
public void onClick(DiscoverBooks discoverBooks) {
bookAdapter.clear();
Intent intent = new Intent(DiscoverActivity.this, BookDetailActivity.class);
client = new MyBookClient();
client.getBooks( discoverBooks.getBookID(), new JsonHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response){
if(response!=null){
final MyBook books = MyBook.fromJson(response);
bookAdapter.add(books);
intent.putExtra( BOOK_DETAIL_KEY, bookAdapter.getItem( 0 ) );
intent.putExtra( CASE_KEY,"searching_book" );
intent.putExtra( ORIGIN_KEY, "profile" );
startActivity( intent );
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
super.onFailure(statusCode, headers, responseString, throwable);
Log.d("Failed: ", ""+statusCode);
Log.d("Error : ", "" + throwable);
}
});
}
};
По какой-то причине, напримерпервые 5 щелчков дают мне следующую ошибку:
V/AsyncHttpRH: Progress 310 from 1 (31000%)
W/JsonHttpRH: onFailure(int, Header[], Throwable, JSONObject) was not overriden, but callback was received
cz.msebera.android.httpclient.client.HttpResponseException: Forbidden
at com.loopj.android.http.AsyncHttpResponseHandler.sendResponseMessage(AsyncHttpResponseHandler.java:446)
at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:160)
at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:177)
at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
После этих примерно пяти щелчков выполняется нужная работа.
Есть ли причина, по которой он не работает в первый раз? время? или почему он все равно выдает эту ошибку, если код выполняет свою работу.
Спасибо