Залп не загружает ничего в ArrayList в Android Studio - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь передать ArrayList, заполненный методом getPartidos(), с залпом, в другое действие с помощью метода btnClick_Normal(View v), но всякий раз, когда я нажимаю какую-либо кнопку, метод использует метод, я получаю сообщение о том, что miListaPartidos пусто ( это ).

URL-адрес подключен и работает правильно.Почему это может происходить и какая часть кода неверна?

The json

Это моя деятельность

import android.content.Intent;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.bumptech.glide.Glide;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class Act1_1 extends AppCompatActivity {

    public String urlPartidos="https://.."; /*hid the url, it's working properly*/

    public ArrayList<Partido> miListaPartidos=new ArrayList<>();


    public Button btns1;
    public Button btns2;
    public Button btns3;
    public Button btns4;
    public Button btns5;
    public Button btns6;
    public Button btns7;
    public Button btns8;
    public Button btnE;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_act1_1);

        btns1=findViewById(R.id.btns1);
        btns2=findViewById(R.id.btns2);
        btns3=findViewById(R.id.btns3);
        btns4=findViewById(R.id.btns4);
        btns5=findViewById(R.id.btns5);
        btns6=findViewById(R.id.btns6);
        btns7=findViewById(R.id.btns7);
        btns8=findViewById(R.id.btns8);
        btnE=findViewById(R.id.btnE);    

        getPartidos();  
    }

    public void btnClick_Normal(View v){
        Intent intent=new Intent(getApplicationContext(),Act1_1_1.class);
        int id1=(Integer.parseInt((String)v.getTag()));
        ArrayList<Partido> listaEq=new ArrayList<>();

        for(int i=(((id1-1)*6)); i<=(id1*6)-1;i++ ) {  
            listaEq.add(miListaPartidos.get(i));    
        }
        intent.putExtra("listaEq",  listaEq);
        startActivity(intent);
    }

    public void btnClick_Especial(View v){   
        Intent intent=new Intent(getApplicationContext(),Act1_1_2.class);
        ArrayList<Partido> listaEq=new ArrayList<>();

        for(int i=48; i<=63;i++ ) {    
            listaEq.add(miListaPartidos.get(i));
        }
        intent.putExtra("listaEq2", listaEq);
        startActivity(intent);
    }

   public void getPartidos(){    
        RequestQueue requestQueue= Volley.newRequestQueue(this);
        JsonObjectRequest jSonObjectRequest=new JsonObjectRequest(Request.Method.GET,urlPartidos, null, new Response.Listener<JSONObject>(){
            public void onResponse(JSONObject response){
                try{
                    JSONArray jsonArrayPartidos=response.getJSONArray("results");
                    if(jsonArrayPartidos.length()>0) {
                        for (int i = 0; i < jsonArrayPartidos.length(); i++) {
                            JSONObject jsonPartido = jsonArrayPartidos.getJSONObject(i);

                            final int id = jsonPartido.getInt("id");
                            final String detalles = jsonPartido.getString("details");
                            final String equipo1 = jsonPartido.getString("team1");
                            final String equipo2 = jsonPartido.getString("team2");
                            final int goles1 = jsonPartido.getInt("goals1");
                            final int goles2 = jsonPartido.getInt("goals2");

                            final Partido nuevoPartido = new Partido(id, detalles, equipo1, equipo2, goles1, goles2);
                            miListaPartidos.add(nuevoPartido);

                        }
                    }
                }
                catch(JSONException je){ }

            } 
        },  new Response.ErrorListener() {
            public void onErrorResponse(VolleyError error) {
            }
        }
        );
        requestQueue.add(jSonObjectRequest);
    }
}

А это мой класс Partido

public class Partido {
    private int id;
    private String detalles;
    private String equipo1;
    private String equipo2;
    private int goles1;
    private int goles2;

    public Partido(int id, String detalles, String equipo1, String equipo2, int goles1, int goles2){    
        this.id=id;
        this.detalles=detalles;
        this.equipo1=equipo1;
        this.equipo2=equipo2;
        this.goles1=goles1;
        this.goles2=goles2;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDetalles() {
        return detalles;
    }

    public void setDetalles(String detalles) {
        this.detalles = detalles;
    }

    public String getEquipo1() {
        return equipo1;
    }

    public void setEquipo1(String equipo1) {
        this.equipo1 = equipo1;
    }

    public String getEquipo2() {
        return equipo2;
    }

    public void setEquipo2(String equipo2) {
        this.equipo2 = equipo2;
    }

    public int getGoles1() {
        return goles1;
    }

    public void setGoles1(int goles1) {
        this.goles1 = goles1;
    }

    public int getGoles2() {
        return goles2;
    }

    public void setGoles2(int goles2) {
        this.goles2 = goles2;
    }
}

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Пожалуйста, введите Serializable в классе Partido

public class Partido implements Serializable {
    private int id;
    private String detalles;
    private String equipo1;
    private String equipo2;
    private int goles1;
    private int goles2;

    public Partido(int id, String detalles, String equipo1, String equipo2, int goles1, int goles2){    
        this.id=id;
        this.detalles=detalles;
        this.equipo1=equipo1;
        this.equipo2=equipo2;
        this.goles1=goles1;
        this.goles2=goles2;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDetalles() {
        return detalles;
    }

    public void setDetalles(String detalles) {
        this.detalles = detalles;
    }

    public String getEquipo1() {
        return equipo1;
    }

    public void setEquipo1(String equipo1) {
        this.equipo1 = equipo1;
    }

    public String getEquipo2() {
        return equipo2;
    }

    public void setEquipo2(String equipo2) {
        this.equipo2 = equipo2;
    }

    public int getGoles1() {
        return goles1;
    }

    public void setGoles1(int goles1) {
        this.goles1 = goles1;
    }

    public int getGoles2() {
        return goles2;
    }

    public void setGoles2(int goles2) {
        this.goles2 = goles2;
    }
}

Это код для получения данных в Act1_1_2

misPartidos = (ArrayList<Partido>) getIntent().getSerializableExtra("listaEq2");

Надеюсь, это поможет вам!

0 голосов
/ 01 июня 2018

Если ваш список пуст, возможно, проблема в самом Json.Иногда у них есть несколько дополнительных символов, поэтому

  1. попробуйте проверить ваш Json, используя JsonLint или Код для украшения

  2. В своем блоке исключений catch Json попытайтесь распечатать трассировку стека и получить сообщение


 catch(JSONException je){
    je.printStackTrace();
     Log.d("ERR",je.getMessage()) ;
 }
...