I am trying to put data that is fetched from server using restTemplate and AsyncTask into recyclerView. In the following code of MainActivity, I am checking server_response and it is showing correct size of server response, means upto getting data from server it is working fine but the return statement of AsyncTaskRunner is throwing error:
List<LinkedHashMap> server_response;
private void initViews() {
System.out.println("initViews fn");
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.card_recycler_view);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
server_response=prepareData();
DataAdapter adapter = new DataAdapter(getApplicationContext(), server_response);
recyclerView.setAdapter(adapter);
}
private List<LinkedHashMap> prepareData() {
return (List<LinkedHashMap>) new AsyncTaskRunner().execute();
}
private class AsyncTaskRunner extends AsyncTask<String, String, List<LinkedHashMap>> {
@Override
protected List<LinkedHashMap> doInBackground(String... params) {
System.out.println("doInbg fn");
publishProgress("geting Data");
String username = "user";
String password = "pass";
String getAllItems = "http://172.16.xx.yy:8080/bptel/restGetAllItem";
HttpAuthentication authHeader = new HttpBasicAuthentication(username, password);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAuthorization(authHeader);
requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
final RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<List> responseEntity=restTemplate.exchange(getAllItems, HttpMethod.GET, new HttpEntity<Object>(requestHeaders), List.class);
server_response=responseEntity.getBody();
System.out.println("server response size is"+server_response.size());
return server_response;
}
The error I am getting is
FATAL EXCEPTION: main
Process: com.example.bptc, PID: 17047
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bptc/com.example.bptc.MainActivity}: java.lang.ClassCastException: com.example.bptc.MainActivity$AsyncTaskRunner cannot be cast to java.util.List
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.ClassCastException: com.example.bptc.MainActivity$AsyncTaskRunner cannot be cast to java.util.List
at com.example.bptc.MainActivity.prepareData(MainActivity.java:131)
Please help me to cast response properly.