LYY哈哈 2016-05-24 05:26 采纳率: 0%
浏览 1184

Android java代码有错误,获取的list一直为0,问题出在哪里

package com.example.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.listener.FindListener;

public class FenleiHuizongActivity extends Activity {
//总列表
ArrayList> all=new ArrayList>();
//根据大类别分出来的表
ArrayList> leixing_expend;
ArrayList> leixing_income;
ArrayList> data=new ArrayList>();
private TableLayout mainTableLayout;
private boolean find;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_huizong);
mainTableLayout=(TableLayout)findViewById(R.id.mainTableLayout);
//这里的数据应该是从服务器取出来的
getAllData();
//通过总的列表对大的类型进行分类(支出)
leixing_expend=getLeixingExpend(all);
//通过总的列表对大的类型进行分类(收入)
// leixing_income=getLeixingIncome(all);
//动态加载大类型布局,同时分别再对大类型进行分类
AddLeixingView(leixing_expend);
// AddLeixingView(leixing_income);
//getDataByDate();

    // 返回按钮
    Button bt1 = (Button) findViewById(R.id.fanhui_huizong);
    // 点击返回按钮跳转到分类查询界面
    bt1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(FenleiHuizongActivity.this,
                    MingxiActivity.class);
            FenleiHuizongActivity.this.startActivity(intent);
            finish();
            overridePendingTransition(0, R.layout.activity_close_exit);
        }
    });
    ExitApplication.getInstance().addActivity(this);
}
/*
 * 查询数据
 */
private void getAllData(){
    //同样,在读取SharedPreferences数据前要实例化出一个SharedPreferences对象 
    SharedPreferences sp= getSharedPreferences("SP", 
            Activity.MODE_PRIVATE); 
    // 使用getString方法获得value,注意第2个参数是value的默认值 
    String name =sp.getString("USER_NAME", ""); 
    BmobQuery<JiZhang> query = new BmobQuery<JiZhang>();
    query.addWhereEqualTo("username", name);
    query.setLimit(100);
    query.findObjects(getApplicationContext(), new FindListener<JiZhang>() {

        @Override
        public void onSuccess(List<JiZhang> arg0) {
            for(JiZhang jz:arg0){
                Map<String, Object> item = new HashMap<String, Object>();
                //日期
                item.put("date", jz.getCreatedAt());
                //收入
                item.put("income", jz.getIncome());
                //支出
                item.put("expend", jz.getExpend());
                //类别
                item.put("leixing", jz.getLeixing());
                //类型
                item.put("type", jz.getType());
                //ID
                item.put("objectId", jz.getObjectId());
                all.add(item);  
            }Toast.makeText(getApplicationContext(), "yes",
                    Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onError(int arg0, String arg1) {
            Toast.makeText(getApplicationContext(), "查询失败",
                    Toast.LENGTH_SHORT).show();
        }           
    });
}
/*
 * 动态添加大类型布局
 */
private void AddLeixingView(ArrayList<Map<String, Object>> list) {
    // TODO 自动生成的方法存根
    for(int i=0;i<list.size();i++){
        View itemView = LayoutInflater.from(FenleiHuizongActivity.this).inflate(R.layout.leixing_items, null);
        LinearLayout mtableRow = (LinearLayout)itemView.findViewById(R.id.leixing_row);
        TextView leixing_name=(TextView)itemView.findViewById(R.id.leixing_name);
        final ImageView iv=(ImageView)itemView.findViewById(R.id.openimage);
        final TableLayout leixingLayout = (TableLayout)itemView.findViewById(R.id.leixingLayout);
        TextView money=(TextView)itemView.findViewById(R.id.money);
        leixing_name.setText(list.get(i).get("leixing").toString());
        if(Integer.valueOf(list.get(i).get("expend").toString())==0){
            money.setText("+"+list.get(i).get("income").toString());
        }else{
            money.setText("-"+list.get(i).get("expend").toString());
            //通过对总数据进行两次筛选,得到该大类的各个小类
            AddTypeView(getTypeData(all,list.get(i).get("leixing").toString()),leixingLayout);
            leixingLayout.setVisibility(View.GONE);
        }

        mtableRow.setOnClickListener(new OnClickListener() {
            boolean down=true;
            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                if(down){
                    down=false;
                    iv.setBackgroundResource(R.drawable.up_icon);
                    leixingLayout.setVisibility(View.VISIBLE);
                }else{
                    down=true;
                    iv.setBackgroundResource(R.drawable.down_icon);
                    leixingLayout.setVisibility(View.GONE);
                }
            }
        });
        mainTableLayout.addView(mtableRow);
    }
}
/*
 * 动态添加小类别的布局
 */
private void AddTypeView(ArrayList<Map<String, Object>> list, TableLayout leixingLayout) {
    // TODO 自动生成的方法存根
    for(int i=0;i<list.size();i++){
        View itemView = LayoutInflater.from(FenleiHuizongActivity.this).inflate(R.layout.leixing_type_items, null);
        TableRow mtableRow = (TableRow)itemView.findViewById(R.id.typerow);
        TextView leixing_name=(TextView)itemView.findViewById(R.id.type_name);

        TextView money=(TextView)itemView.findViewById(R.id.money);
        leixing_name.setText(list.get(i).get("type").toString());
        money.setText(list.get(i).get("expend").toString());
        leixingLayout.addView(mtableRow);
    }
}
private ArrayList<Map<String, Object>> getTypeData(ArrayList<Map<String, Object>> list,String leixing) {
    ArrayList<Map<String, Object>> data=new ArrayList<Map<String,Object>>();
    Map<String, Object> map=new HashMap<String, Object>();
    map.put("leixing", list.get(0).get("leixing").toString());
    map.put("type", list.get(0).get("type").toString());
    map.put("expend", list.get(0).get("expend").toString());
    data.add(map);

    for(int i=1;i<list.size();i++){
        find=false;
        for(int j=0;j<data.size();j++){
            //null指针异常判断
            if(data.get(j).get("type")==null||list.get(i).get("type")==null)continue;
            //如果当前数据的小类型已存在data中,则对相同小类进行求和
            if(data.get(j).get("type").toString().equals(list.get(i).get("type").toString())){
                data.get(j).put("expend", ""+(Integer.valueOf(data.get(j).get("expend").toString())
                        +Integer.valueOf(list.get(i).get("expend").toString())));
                j=data.size();
                find=true;
            }
        }
        if(!find)//如果当前数据的小类型不存在data中,则加入data中
        {
            Map<String, Object> map2=new HashMap<String, Object>();
            map2.put("type", list.get(i).get("type").toString());
            map2.put("leixing", list.get(i).get("leixing").toString());
            map2.put("expend", list.get(i).get("expend").toString());
            data.add(map2);
        }
    }
    //对筛选而来的小类别列表根据当前大类进行再次分类,得到当前大类下所有小类的信息
    ArrayList<Map<String, Object>> result=new ArrayList<Map<String,Object>>();
    for(int i=0;i<data.size();i++){
        if(data.get(i).get("leixing").toString().equals(leixing)){
            result.add(data.get(i));
        }
    }
    return result;
}
/*
 * 支出类别
 */
private ArrayList<Map<String, Object>> getLeixingExpend(ArrayList<Map<String, Object>> list) {
    ArrayList<Map<String, Object>> data=new ArrayList<Map<String,Object>>();
    Map<String, Object> map=new HashMap<String, Object>();
    if(list.size()==0){
        Toast.makeText(getApplicationContext(), "list为0",
                Toast.LENGTH_SHORT).show();
    }else{
        map.put("leixing", list.get(0).get("leixing").toString());
        map.put("expend", list.get(0).get("expend").toString());
        //map.put("income", list.get(0).get("income").toString());
        data.add(map);

        for(int i=1;i<list.size();i++){
            find=false;
            for(int j=0;j<data.size();j++){
                //Log.v("TAG", data.get(j).get("leixing").toString()+":"+list.get(i).get("leixing").toString());
                if(data.get(j).get("leixing")==null||list.get(i).get("leixing")==null)continue;
                //如果当前数据的大类型已存在data中,则对相同大类进行求和
                if(data.get(j).get("leixing").toString().equals(list.get(i).get("leixing").toString())){
                    data.get(j).put("expend", ""+(Integer.valueOf(data.get(j).get("expend").toString())
                            +Integer.valueOf(list.get(i).get("expend").toString())));
                    //data.get(j).put("income", ""+(Integer.valueOf(data.get(j).get("income").toString())
                        //  +Integer.valueOf(list.get(i).get("income").toString())));
                    j=data.size();
                    find=true;
                }
            }
            if(!find)   //如果当前数据的大类型不存在data中,则加入data中
            {
                Map<String, Object> map2=new HashMap<String, Object>();
                map2.put("leixing", list.get(i).get("leixing").toString());
                map2.put("expend", list.get(i).get("expend").toString());
                //map2.put("income", list.get(i).get("income").toString());
                data.add(map2);
            }
        }}
    return data;
}

}

  • 写回答

3条回答 默认 最新

  • 马保国大师 2016-05-24 06:09
    关注

    list没添加到元素进去

    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试