android软件简约记账app开发day09-主页面模块,收支记账信息的展示

我们第一天已经绘制了记账条目的界面,也在主界面设置了LietView来展示记账条目,今天来实现记账后再主界面的展示效果

首先在主界面设置组件对象

ListView todayLv;
List<AccountBean> mDatas;

重写onCreate方法,

@SuppressLint({"ResourceType", "WrongViewCast"})
@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   initTime();
   mDatas = new ArrayList<>();
   todayLv=findViewById(R.id.main_lv);
   Log.i("open52000", "onCreate: "+mDatas.toString());
   //设置适配器:加载每一行数据到列表当中
   adapter = new AccountAdapter(this, mDatas);
   Log.i("open52000", "onCreate: "+adapter.toString());
   Log.i("open52000", "onCreate: "+todayLv.toString());
   todayLv.setAdapter(adapter);
}

添加adapter类

设置ACcountAdapter来展现数据

package com.open.tally.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.open.tally.R;
import com.open.tally.db.AccountBean;

import java.util.Calendar;
import java.util.List;

public class AccountAdapter extends BaseAdapter {
   Context context;
   List<AccountBean>mDatas;
   LayoutInflater inflater;
   int year,month,day;
   public AccountAdapter(Context context, List<AccountBean> mDatas) {
       this.context = context;
       this.mDatas = mDatas;
       inflater = LayoutInflater.from(context);
       Calendar calendar = Calendar.getInstance();
       year = calendar.get(Calendar.YEAR);
       month = calendar.get(Calendar.MONTH)+1;
       day = calendar.get(Calendar.DAY_OF_MONTH);
  }

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

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

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

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
       ViewHolder holder = null;
       if (convertView == null) {
           convertView = inflater.inflate(R.layout.item_mainlv,parent,false);
           holder = new ViewHolder(convertView);
           convertView.setTag(holder);
      }else{
           holder = (ViewHolder) convertView.getTag();
      }
       AccountBean bean = mDatas.get(position);
       holder.typeIv.setImageResource(bean.getsImageId());
       holder.typeTv.setText(bean.getTypename());
       holder.beizhuTv.setText(bean.getBeizhu());
       holder.moneyTv.setText("¥ "+bean.getMoney());
       if (bean.getYear()==year&&bean.getMonth()==month&&bean.getDay()==day) {
           String time = bean.getTime().split(" ")[1];
           holder.timeTv.setText("今天 "+time);
      }else {
           holder.timeTv.setText(bean.getTime());
      }
       return convertView;
  }

   class ViewHolder{
       ImageView typeIv;
       TextView typeTv,beizhuTv,timeTv,moneyTv;
       public ViewHolder(View view){
           typeIv = view.findViewById(R.id.item_mainlv_iv);
           typeTv = view.findViewById(R.id.item_mainlv_tv_title);
           timeTv = view.findViewById(R.id.item_mainlv_tv_time);
           beizhuTv = view.findViewById(R.id.item_mainlv_tv_beizhu);
           moneyTv = view.findViewById(R.id.item_mainlv_tv_money);

      }
  }
}

添加查找数据库信息的方法

/*
* 获取记账表当中某一天的所有支出或者收入情况
* */
public static List<AccountBean>getAccountListOneDayFromAccounttb(int year,int month,int day){
   List<AccountBean>list = new ArrayList<>();
   String sql = "select * from accounttb where year=? and month=? and day=? order by id desc";
   Cursor cursor = db.rawQuery(sql, new String[]{year + "", month + "", day + ""});
   //遍历符合要求的每一行数据
   while (cursor.moveToNext()) {
       int id = cursor.getInt(cursor.getColumnIndexOrThrow("id"));
       String typename = cursor.getString(cursor.getColumnIndexOrThrow("typename"));
       String beizhu = cursor.getString(cursor.getColumnIndexOrThrow("beizhu"));
       String time = cursor.getString(cursor.getColumnIndexOrThrow("time"));
       int sImageId = cursor.getInt(cursor.getColumnIndexOrThrow("sImageId"));
       int kind = cursor.getInt(cursor.getColumnIndexOrThrow("kind"));
       float money = cursor.getFloat(cursor.getColumnIndexOrThrow("money"));
       AccountBean accountBean = new AccountBean(id, typename, sImageId, beizhu, money, time, year, month, day, kind);
       list.add(accountBean);
  }
   return list;
}

完善注主界面代码

public void onClick(View view) {
   switch (view.getId()){
       case R.id.main_iv_search:
           break;
       case  R.id.main_btn_exit:
           Intent it1=new Intent(this,RecordActivity.class);
           startActivity(it1);
           break;
       case R.id.main_btn_more:
           break;
  }
}



/* 获取今日的具体时间*/
private void initTime() {
   Calendar calendar = Calendar.getInstance();
   year = calendar.get(Calendar.YEAR);
   month = calendar.get(Calendar.MONTH)+1;
   day = calendar.get(Calendar.DAY_OF_MONTH);
}

// 当activity获取焦点时,会调用的方法
@Override
protected void onResume() {
   super.onResume();
   loadDBData();
}
// 加载数据库数据
private void loadDBData() {
   List<AccountBean> list = DBManager.getAccountListOneDayFromAccounttb(year, month, day);
   mDatas.clear();
   mDatas.addAll(list);
   adapter.notifyDataSetChanged();
}

android软件简约记账app开发day09-主页面模块,收支记账信息的展示的更多相关文章

  1. android软件简约记账app开发day10-主页面模块--头信息的展示,和之后功能完善的目标。

    android软件简约记账app开发day10-主页面模块--头信息的展示,和之后功能完善的目标. 今天来写主界面头信息的展示,也就是将第一天的写的layout中的item_main_top展示到主界 ...

  2. android软件简约记账app开发day04-记账页面条目的代码书写

    android软件简约记账app开发day04-记账页面条目的代码书写 在前三天我们完成了基本的界面展示,从今天开始,我们进入到后台逻辑代码的编写中,今天开发记账条目的代码 我们在主页面点击记一笔图标 ...

  3. android软件简约记账app开发day01-今日收支明细的界面绘制

    android软件简约记账app开发day01-今日收支明细的界面绘制 导入素材 导入在阿里iconfront图标库下载的字体图标分为大小两种,分别导入到项目目录mipmap-hdpi和mipmap- ...

  4. android软件简约记账app开发day08-时间对话框的书写+改bug,改bug

    android软件简约记账app开发day08-时间对话框的书写+改bug,改bug 绘制对话跨页面 在添加记账信息功能中,我提供了用户添加备注添加事件的功能,设计是点击时间会弹出一个时间对话框供用户 ...

  5. android软件简约记账app开发day07-备注界面完善

    android软件简约记账app开发day07-备注界面完善 ## 昨天我们已经绘制了备注页面,今天来用Java代码组装完善一下. 首先我们新建BeiZhuDialog类关联备注页面,并且实现点击接口 ...

  6. android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面

    android软件简约记账app开发day06-将记账条目添加到数据库并且绘制备注页面 首先写添加到数据库 在DBOpenHelper中添加创建记账表的语句 //创建记账表 sql = "c ...

  7. android软件简约记账app开发day05-记账页面条目代码优化和bug解决

    android软件简约记账app开发day05-记账页面条目代码优化和bug解决 今天还是因为该bug又极大的耽误了项目进程,该开发文档都要没有时间来写了. 先说bug吧,在昨天已经实现了页面图标的展 ...

  8. android软件简约记账app开发day03-自定义键盘的书写

    android软件简约记账app开发day03-自定义键盘的书写 我们在fragment界面使用了自定义的keybroad键盘,所以今天我们来书写自定义的键盘代码 新建util包,新建keyboard ...

  9. android软件简约记账app开发day02-收入支出明细页面绘制

    android软件简约记账app开发day02-收入支出明细页面绘制 效果图 列表界面绘制 新建layout文件-item_mainlv.xml大体使用绝对布局,嵌套相对布局,嵌套文本内容实现 < ...

随机推荐

  1. HT4936S锂电池充放电芯片,充电宝芯片

    应用电路 引脚定义 参考 http://www.hotchip.com.cn/products/

  2. CF1479B Painting the Array(贪心+DP)

    题目大意:给你一个序列,让你提取出一个子序列A,剩余的部分组成子序列B,现定义seg(x)表示把序列x中相邻的相同数合并成一个数后,序列x的长度,分别求seg(A)+seg(B)的最大值和最小值,n= ...

  3. buu equation wp

    知识点考察:jsfuck解码.js逆向.z3处理大量数据 源码分析 源码 根据提示猜测有jsfuck Jsfuck编码共六个字符分别为[.].+.!.(.) 观察上述不难发现l['jsfuck']=' ...

  4. 什么叫 CC 攻击?什么叫 DDOS 攻击?

    CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽.DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一 ...

  5. springboot监听kafka(不使用spring-kafka)

    一.不使用spring-kafka的原因 kafka服务端版本为0.10.0.1-Ipv20191220-hbp2.1.0,为避免版本问题导致监听失败,客户端也采用0.10.0.1版本,客户端0.10 ...

  6. httpRunner使用小结

    1.每个系统可以给所有相关接口准备一份完整的主流程数据,这样就不用每执行一条用例就要先执行很多前置用例2.每条用例在设计之初,关于使用的前置数据,以及条件判断的数据值,以及设置的前提条件数据值,尽量保 ...

  7. vue集成webpack,遭遇 SyntaxError: Unknown word

    这个错误根本和我的项目八竿子打不着,错误原因是配置了 css 的rule,将 这个rule注释掉,正常运行没有问题, 可是我却有强迫症,既然处理 node_modules 文件里才出现的错误,那么我就 ...

  8. Java如何声明一个数组?JS如何声明一个数组?如何获取数组长度

    1 Long[] numbers; //一般使用的定义方式,可分为静态和动态两种定义方式,下有说明. 2 Long numbers[]; //跟上面用法一致. 3 Long... numbers; / ...

  9. Citus 分布式 PostgreSQL 集群 - SQL Reference(手动查询传播)

    手动查询传播 当用户发出查询时,Citus coordinator 将其划分为更小的查询片段,其中每个查询片段可以在工作分片上独立运行.这允许 Citus 将每个查询分布在集群中. 但是,将查询划分为 ...

  10. carsim笔记——道路设置

    第一步: 进入道路轨迹设置 道路情况设置举例 第二步:设置道路3D的显示效果 对上面的解释举例说明