Member 14186786 Ответов: 0

Как отфильтровать данные json в android studio


Я хочу отфильтровать конкретные данные json в android studio,а не получать все данные.Например, отфильтруйте данные на основе даты 16-3-2019.Ниже приведены данные json

JSON
matches
0
unique_id : 1168120
date : "2019-03-15T00:00:00.000Z"
dateTimeGMT : "2019-03-15T04:30:00.000Z"
team-1 : "Afghanistan"
team-2 : "Ireland"
type : "Test"
squad : true
toss_winner_team : "Ireland"
winner_team : "Afghanistan"
matchStarted : true

1
unique_id : 1160301
date : "2019-03-16T00:00:00.000Z"
dateTimeGMT : "2019-03-16T21:30:00.000Z"
team-1 : "Northern Districts"
team-2 : "Central Districts"
toss_winner_team : "Northern Districts"
type : "First-class"
squad : false
matchStarted : true


Что я уже пробовал:

Ниже приведен код java

<pre>public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private List<Model> modelList;

    private String url = "http://cricapi.com/api/matches?apikey=wnUZ9BJ9keX6It8FQQryK6mbCZo1";



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

        recyclerView = findViewById(R.id.recyclerview);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        modelList = new ArrayList<>();

        loadUrlData();


    }

    private void loadUrlData() {
        final ProgressDialog pd = new ProgressDialog(this);
        pd.setMessage("Loading ...");
        pd.show();

        StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                pd.dismiss();
                try {
                    JSONArray jsonArray=new JSONObject(response).getJSONArray("matches");
                    for (int i=0; i<jsonArray.length(); i++){
                        try {
                            String uniqueid=jsonArray.getJSONObject(i).getString("unique_id");
                            String team1=jsonArray.getJSONObject(i).getString("team-1");
                            String team2=jsonArray.getJSONObject(i).getString("team-2");
                            String matchType=jsonArray.getJSONObject(i).getString("type");
                            String matchStatus=jsonArray.getJSONObject(i).getString("matchStarted");
                            if (matchStatus.equals("true")){
                                matchStatus="Match Started";
                            }else {
                                matchStatus="Match not started";
                            }
                            String dateTimeGMT=jsonArray.getJSONObject(i).getString("dateTimeGMT");
                            SimpleDateFormat format1=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
                            format1.setTimeZone(TimeZone.getTimeZone(dateTimeGMT));
                            Date date=format1.parse(dateTimeGMT);

                            SimpleDateFormat format2=new SimpleDateFormat("yyyy-MM-dd HH:mm");
                            format2.setTimeZone(TimeZone.getTimeZone("GMT"));

                            String dateTime=format2.format(date);


                            Model model=new Model(uniqueid,team1,team2,matchType,matchStatus,dateTime);
                            modelList.add(model);


                        }catch (Exception e){
                            Toast.makeText(MainActivity.this,"" +e.getMessage(),Toast.LENGTH_SHORT).show();
                        }
                    }
                    adapter=new MyAdapter(modelList,getApplicationContext());
                    recyclerView.setAdapter(adapter);

                }catch (Exception e){
                    Toast.makeText(MainActivity.this,"" +e.getMessage(),Toast.LENGTH_SHORT).show();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this,"Error:" +error,Toast.LENGTH_LONG).show();
            }
        });
        RequestQueue requestQueue= Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }


}

David Crow

А вы пробовали нет создание нового Model объект и добавление его к modelList если dateTime разве это не то, что вы ищете?

Другими словами, нет никакого if() условие вокруг вызова к add() Матчи добавляются независимо от даты.

Member 14186786

Да, я создал модель, названную моделью.Ниже приведен java-код класса Model

модель публичного класса {

Идентификатор строки,team1,team2,matchType,matchStatus,дата;

общественное модель(идентификатор строки, строки, КОМАНДА1, команда2 строки, при этом строка, строка matchStatus, строка, дата) {
это.идентификатор = идентификатор;
это.КОМАНДА1 = КОМАНДА1;
это.команда2 = команда2;
это.при этом при;
this.matchStatus = matchStatus;
этот.дата = дата;
}

общественного строка getId() {
идентификатор возврата;
}

общественного строка getTeam1() {
вернуться КОМАНДА1;
}

общественного строка getTeam2() {
вернуться команда2;
}

публичная строка getMatchType() {
возврат при;
}

публичная строка getMatchStatus() {
вернуться matchStatus;
}

общественного строка функции getdate() {
дата возврата;
}
}

David Crow

Возможно, вы захотите перечитать мой ответ вам. Я не стал спрашивать что именно Model похоже на то.

Member 14186786

Извините за такой ответ, Нет, я не создавал без новой модели

0 Ответов