Android 使用对象筛选列表?

Android 使用对象筛选列表?,android,json,Android,Json,在我的应用程序中,我有一个JSONArray,其中包含一些徽章信息。我获取这些信息并添加一个对象(Batalha)并生成一个包含所有信息的列表。现在,我需要过滤这个列表来计算玩家有多少徽章。徽章参考是ID_Arena。问题是我不知道为什么在ListAdapter中复制信息 我怎么做 在这里 JSON "retorno": { "batalhas": { "aberto": [ { "I

在我的应用程序中,我有一个JSONArray,其中包含一些徽章信息。我获取这些信息并添加一个对象(Batalha)并生成一个包含所有信息的
列表。现在,我需要过滤这个列表来计算玩家有多少徽章。徽章参考是ID_Arena。问题是我不知道为什么在ListAdapter中复制信息

我怎么做

在这里

JSON

"retorno": {
        "batalhas": {
            "aberto": [
                {
                    "ID": "17",
                    "player1": "fernando@domain.com",
                    "player2": "joao@msn.com",
                    "data_inicio": "2014-12-05 16:32:03",
                    "data_fim": null,
                    "status": "1",
                    "ID_arena": "1",
                    "vez_player": "joao@msn.com",
                    "player_vencedor": null,
                    "adversario": [
                        {
                            "ID": "9",
                            "nome": "Joao Paulo",
                            "email": "joao@msn.com",
                            "foto": "e8357f1a1d05334f08c84d2de0049234.png",
                            "status": "1",
                            "online": "0",
                            "pontuacao": "1260",
                            "graduacao": "Ministro"
                        }
                    ],

                    "badges": [
                        {
                            "ID": "41",
                            "email": "joao@msn.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "45",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "51",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "52",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "53",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "4",
                            "status": "0"
                        },
                        {
                            "ID": "54",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "4",
                            "status": "0"
                        }
                    ]
                },
/** get a List<Batalha> that contain batalha informations/opponent/badges */
    public ApplicationController getAllBattles(final BatalhaAdapter listener){
    ApplicationController apc = new ApplicationController(urlGet.toString(), 
                                                                  null, 
                                                                  new Response.Listener<JSONObject>() {
                                                                        @Override
                                                                        public void onResponse(JSONObject obj) {
                                                                            //define batalha
                                                                            try {
                                                                                JSONObject objRetorno = obj.getJSONObject("retorno");

                                                                                /** abertas */
                                                                                JSONObject objBatalhas = objRetorno.getJSONObject("batalhas");                                                                                                                                                      
                                                                                Gson gson = new Gson();

                                                                                JSONArray arrayAberto = objBatalhas.getJSONArray("aberto");
                                                                                List<Batalha> listBatalhaAberta = new ArrayList<Batalha>();

                                                                                //batalha aberta
                                                                                for(int x = 0; x < arrayAberto.length(); x++){
                                                                                    JSONObject jsObj = arrayAberto.getJSONObject(x);                                    
                                                                                    Batalha batalha = gson.fromJson(jsObj.toString(), Batalha.class);

                                                                                    //adversario
                                                                                    JSONArray arrayAdversario = jsObj.getJSONArray("adversario");
                                                                                    for(int i = 0; i < arrayAdversario.length(); i++){
                                                                                        JSONObject jsAdvers = arrayAdversario.getJSONObject(i);
                                                                                        Usuario usuario = gson.fromJson(jsAdvers.toString(), Usuario.class);
                                                                                        batalha.addAdversario(usuario);
                                                                                    }

                                                                                    //badges
                                                                                    JSONArray arrayBadges = jsObj.getJSONArray("badges");
                                                                                    for(int i = 0; i < arrayBadges.length(); i++){
                                                                                        Log.i("BATALHA_ID_GETALLBATTLES->", batalha.getId() + "");
                                                                                        JSONObject jsBadge = arrayBadges.getJSONObject(i);
                                                                                        BadgesGanha badge = gson.fromJson(jsBadge.toString(), BadgesGanha.class); 
                                                                                        batalha.addBadgesGanha(badge);                                                                                  
                                                                                    }
                                                                                    ////
                                                                                    listBatalhaAberta.add(batalha);
                                                                                }
    listener.getAllBattlesOpened(listBatalhaAberta);
获取和准备JSON

"retorno": {
        "batalhas": {
            "aberto": [
                {
                    "ID": "17",
                    "player1": "fernando@domain.com",
                    "player2": "joao@msn.com",
                    "data_inicio": "2014-12-05 16:32:03",
                    "data_fim": null,
                    "status": "1",
                    "ID_arena": "1",
                    "vez_player": "joao@msn.com",
                    "player_vencedor": null,
                    "adversario": [
                        {
                            "ID": "9",
                            "nome": "Joao Paulo",
                            "email": "joao@msn.com",
                            "foto": "e8357f1a1d05334f08c84d2de0049234.png",
                            "status": "1",
                            "online": "0",
                            "pontuacao": "1260",
                            "graduacao": "Ministro"
                        }
                    ],

                    "badges": [
                        {
                            "ID": "41",
                            "email": "joao@msn.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "45",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "51",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "52",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "1",
                            "status": "0"
                        },
                        {
                            "ID": "53",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "4",
                            "status": "0"
                        },
                        {
                            "ID": "54",
                            "email": "fernando@domain.com",
                            "ID_batalha": "17",
                            "ID_arena": "4",
                            "status": "0"
                        }
                    ]
                },
/** get a List<Batalha> that contain batalha informations/opponent/badges */
    public ApplicationController getAllBattles(final BatalhaAdapter listener){
    ApplicationController apc = new ApplicationController(urlGet.toString(), 
                                                                  null, 
                                                                  new Response.Listener<JSONObject>() {
                                                                        @Override
                                                                        public void onResponse(JSONObject obj) {
                                                                            //define batalha
                                                                            try {
                                                                                JSONObject objRetorno = obj.getJSONObject("retorno");

                                                                                /** abertas */
                                                                                JSONObject objBatalhas = objRetorno.getJSONObject("batalhas");                                                                                                                                                      
                                                                                Gson gson = new Gson();

                                                                                JSONArray arrayAberto = objBatalhas.getJSONArray("aberto");
                                                                                List<Batalha> listBatalhaAberta = new ArrayList<Batalha>();

                                                                                //batalha aberta
                                                                                for(int x = 0; x < arrayAberto.length(); x++){
                                                                                    JSONObject jsObj = arrayAberto.getJSONObject(x);                                    
                                                                                    Batalha batalha = gson.fromJson(jsObj.toString(), Batalha.class);

                                                                                    //adversario
                                                                                    JSONArray arrayAdversario = jsObj.getJSONArray("adversario");
                                                                                    for(int i = 0; i < arrayAdversario.length(); i++){
                                                                                        JSONObject jsAdvers = arrayAdversario.getJSONObject(i);
                                                                                        Usuario usuario = gson.fromJson(jsAdvers.toString(), Usuario.class);
                                                                                        batalha.addAdversario(usuario);
                                                                                    }

                                                                                    //badges
                                                                                    JSONArray arrayBadges = jsObj.getJSONArray("badges");
                                                                                    for(int i = 0; i < arrayBadges.length(); i++){
                                                                                        Log.i("BATALHA_ID_GETALLBATTLES->", batalha.getId() + "");
                                                                                        JSONObject jsBadge = arrayBadges.getJSONObject(i);
                                                                                        BadgesGanha badge = gson.fromJson(jsBadge.toString(), BadgesGanha.class); 
                                                                                        batalha.addBadgesGanha(badge);                                                                                  
                                                                                    }
                                                                                    ////
                                                                                    listBatalhaAberta.add(batalha);
                                                                                }
    listener.getAllBattlesOpened(listBatalhaAberta);
/**获取包含batalha信息/对手/徽章的列表*/
公共应用程序控制器getAllBattles(最终BatalhaAdapter侦听器){
ApplicationController apc=新的ApplicationController(urlGet.toString(),
无效的
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject obj){
//定义巴塔利亚
试一试{
JSONObject objRetorno=obj.getJSONObject(“returno”);
/**阿伯塔斯*/
JSONObject objbatahas=objRetorno.getJSONObject(“batalhas”);
Gson Gson=新的Gson();
JSONArray arrayAberto=objBatalhas.getJSONArray(“aberto”);
List listBatalhaAberta=新的ArrayList();
//巴塔利亚阿伯塔酒店
对于(int x=0;x”,BATALHA.getId()+”;
JSONObject jsBadge=arrayBadges.getJSONObject(i);
BadgesGanha badge=gson.fromJson(jsBadge.toString(),BadgesGanha.class);
batalha.addBadgesGanha(徽章);
}
////
列表Batalhaaberta.add(batalha);
}
listener.GetAllBattleSoped(listBatalhaAberta);
定义ListAdapter

 private void getAllBattles(){
            ApplicationController app = new BatalhaDAO().getAllBattles(new BatalhaAdapter(){
                @Override
                public void getAllBattlesOpened(List<Batalha> list) {
                    if(!list.isEmpty()){
                        listBatalhaAberto = list;
                        if(jogosListAdapterAndamento == null){
                            jogosListAdapterAndamento = new JogosListAdapter(getView().getContext(), listBatalhaAberto);
                            lvJogosAndamento.setAdapter(jogosListAdapterAndamento);
                        }else{
                            jogosListAdapterAndamento.changeList(listBatalhaAberto);
                        }
                    }
                }
public class JogosListAdapter extends BaseAdapter {
    private List<Batalha> lista;
    private Context context;    

    public JogosListAdapter(Context context, List<Batalha> list){
        this.context = context;
        this.lista = list;
    }

    @Override
    public int getCount() {
        return lista.size();
    }

    @Override
    public Object getItem(int position) {
        return lista.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public void changeList(List<Batalha> lista){
        this.lista = lista;
        notifyDataSetChanged();     
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        Batalha batalha = lista.get(position);
        View layout;
        if (view == null){
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            layout = inflater.inflate(R.layout.jogos_list_adapter, parent, false);
        }else{
            layout = view;
        }

      //get and count badges of usuario
      //badges
        int bgP1 = 0;
        int bgP2 = 0;
        if(!batalha.getBadges().isEmpty()){
            for(BadgesGanha bg : batalha.getBadges()){
                if(Long.parseLong(String.valueOf(bg.getID_batalha())) == batalha.getId()){
                    if(bg.getEmail().equals("fernando@domain.com")){
                        bgP1++;
                    }else{
                        bgP2++;
                    }
                }
            }
        }

    tvValorJogador.setText(String.valueOf(bgP1));
            tvRivalJogador.setText(String.valueOf(bgP2));
private void getAllBattles(){
ApplicationController app=new BatalhaDAO().getAllBattles(new BatalhaAdapter()){
@凌驾
公共无效GetAllBattlesOpen(列表){
如果(!list.isEmpty()){
listBatalhaAberto=列表;
if(jogoListAdapterAndamento==null){
JogoListAdapterAndamento=新的JogoListAdapter(getView().getContext(),listBatalhaAberto);
LVJOGOSTANDAMENTO.设置适配器(JOGOLISTAPDATERAMENTO);
}否则{
Jogolistatadapterandamento.变更清单(listBatalhaAberto);
}
}
}
列表适配器

 private void getAllBattles(){
            ApplicationController app = new BatalhaDAO().getAllBattles(new BatalhaAdapter(){
                @Override
                public void getAllBattlesOpened(List<Batalha> list) {
                    if(!list.isEmpty()){
                        listBatalhaAberto = list;
                        if(jogosListAdapterAndamento == null){
                            jogosListAdapterAndamento = new JogosListAdapter(getView().getContext(), listBatalhaAberto);
                            lvJogosAndamento.setAdapter(jogosListAdapterAndamento);
                        }else{
                            jogosListAdapterAndamento.changeList(listBatalhaAberto);
                        }
                    }
                }
public class JogosListAdapter extends BaseAdapter {
    private List<Batalha> lista;
    private Context context;    

    public JogosListAdapter(Context context, List<Batalha> list){
        this.context = context;
        this.lista = list;
    }

    @Override
    public int getCount() {
        return lista.size();
    }

    @Override
    public Object getItem(int position) {
        return lista.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public void changeList(List<Batalha> lista){
        this.lista = lista;
        notifyDataSetChanged();     
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        Batalha batalha = lista.get(position);
        View layout;
        if (view == null){
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            layout = inflater.inflate(R.layout.jogos_list_adapter, parent, false);
        }else{
            layout = view;
        }

      //get and count badges of usuario
      //badges
        int bgP1 = 0;
        int bgP2 = 0;
        if(!batalha.getBadges().isEmpty()){
            for(BadgesGanha bg : batalha.getBadges()){
                if(Long.parseLong(String.valueOf(bg.getID_batalha())) == batalha.getId()){
                    if(bg.getEmail().equals("fernando@domain.com")){
                        bgP1++;
                    }else{
                        bgP2++;
                    }
                }
            }
        }

    tvValorJogador.setText(String.valueOf(bgP1));
            tvRivalJogador.setText(String.valueOf(bgP2));
公共类JogoListAdapter扩展BaseAdapter{
私人名单清单a;
普里瓦特