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