Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class HerosFragment extends Fragment {
- private static final int CODE_GET_REQUEST = 1024;
- private static final int CODE_POST_REQUEST = 1025;
- //Variaveis dos componentes
- EditText editTextHeroId, editTextName, editTextRealname;
- RatingBar ratingBar;
- Spinner spinnerTeam;
- ProgressBar progressBarList;
- ListView listView;
- FloatingActionButton fabAddHero;
- //vamos usar essa lista para exibir herói na lista
- List<Hero> heroList;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //Preciso inicializar esses dois componentes mas não consigo
- progressBarList = (ProgressBar) findViewById(R.id.progressBarList);
- listView = (ListView) findViewById(R.id.listViewHeroes);
- heroList = new ArrayList<>();
- readHeroes();
- }
- //Recupera os dados dos herois do banco de dados
- private void readHeroes() {
- PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_READ_HEROES, null, CODE_GET_REQUEST);
- request.execute();
- }
- //Para atualizar a lista de herois
- private void refreshHeroList(JSONArray heroes) throws JSONException {
- //limpa herois anteriores
- heroList.clear();
- //Cria uma nova lista com os herois atualizados do JSON de resposta
- for (int i = 0; i < heroes.length(); i++) {
- //getting each hero object
- JSONObject obj = heroes.getJSONObject(i);
- //adiciona os herois a lista
- heroList.add(new Hero(
- obj.getInt("id"),
- obj.getString("name"),
- obj.getString("realname"),
- obj.getInt("rating"),
- obj.getString("teamaffiliation")
- ));
- }
- //cria um adapter com a lista de herois
- CustomAdapterHero adapter = new CustomAdapterHero(this.getActivity(), heroList);
- listView.setAdapter(adapter);
- }
- //classe interna para executar solicitação de rede estendendo um AsyncTask
- private class PerformNetworkRequest extends AsyncTask<Void, Void, String> {
- //o URL onde precisa enviar a solicitação
- String url;
- //Os parametros
- HashMap<String, String> params;
- //O código do pedido para definir se é um GET ou POST
- int requestCode;
- //Construtor para inicializar os valores
- PerformNetworkRequest(String url, HashMap<String, String> params, int requestCode) {
- this.url = url;
- this.params = params;
- this.requestCode = requestCode;
- }
- //Quando a tarefa começou a exibir uma barra de progresso
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- progressBarList.setVisibility(View.VISIBLE);
- }
- //Este método dará a resposta do pedido
- @Override
- protected void onPostExecute(String s) {
- super.onPostExecute(s);
- progressBarList.setVisibility(GONE);
- try {
- JSONObject object = new JSONObject(s);
- if (!object.getBoolean("error")) {
- //atualizando o herolista após cada operação
- //então nós conseguimos uma lista atualizada
- refreshHeroList(object.getJSONArray("heroes"));
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- //A operação da rede será realizada em segundo plano
- @Override
- protected String doInBackground(Void... voids) {
- RequestHandler requestHandler = new RequestHandler();
- if (requestCode == CODE_POST_REQUEST)
- return requestHandler.sendPostRequest(url, params);
- if (requestCode == CODE_GET_REQUEST)
- return requestHandler.sendGetRequest(url);
- return null;
- }
- }
- }
Add Comment
Please, Sign In to add comment