愿君学长松,慎勿作桃李。这篇文章主要讲述家庭记账本安卓版开发:第四天相关的知识,希望能为你提供帮助。
一、效果展示
【家庭记账本安卓版开发(第四天)】
文章图片
账户名为张志伟,登录
文章图片
查看账目
文章图片
这是数据库的数据
文章图片
文章图片
二、总结
学习了BaseAdapter适配器来根据查询到的数据条数显示表单的行数,实现代码和布局的联动。
三、部分原码
QueryAllActivity.java
package com.example.familybook; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import android.widget.TextView; import androidx.annotation.Nullable; import com.example.familybook.dao.BillDaoImpl; import com.example.familybook.dao.IBillDao; import com.example.familybook.entity.Bill; import com.example.familybook.utils.ShowBillsAdapter; import com.example.familybook.utils.ViewHolder; import java.util.List; public class QueryAllActivity extends Activity { private String mUsername; private String TAG="QueryAllActivity"; private List < Bill> mShowBills; private List < ViewHolder> mViewHolder; private IBillDao mIBillDao; private SQLiteOpenHelper mBillDatabaseHelper; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); this.setTitle("总览账目信息"); //获取登录者的用户名 Intent intent =getIntent(); mUsername =intent.getStringExtra("username"); Log.e(TAG,"使用者:"+mUsername); //初始化控件 initView(); //获取表格布局 ListView ShowBillList=(ListView)findViewById(R.id.list_View); //获取从数据库获得的表单 mShowBills=mIBillDao.listAllBill(mUsername); //新建并配置Show ShowBillsAdapterShowAdapter=new ShowBillsAdapter(mShowBills,this); ShowBillList.setAdapter(ShowAdapter); //添加事件监听 initListener(); }private void initListener() {}private void initView() { mIBillDao =new BillDaoImpl(QueryAllActivity.this); } }
ShowBillsAdapter.java
package com.example.familybook.utils; /** * 这是查看总览账目的列表帮助类 */import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.example.familybook.R; import com.example.familybook.entity.Bill; import java.util.List; public class ShowBillsAdapter extends BaseAdapter { private List< Bill> mList; private Context mContext; private LayoutInflater mLayoutInflater; public ShowBillsAdapter(List< Bill> mList, Context mContext) { this.mList = mList; this.mContext = mContext; this.mLayoutInflater = LayoutInflater.from(mContext); }/** * 返回适配器中数据集中的个数 * @return */ @Override public int getCount() { return mList.size(); }/** * 获取数据数据集中与指定索引对应的数据项 * @param position * @return */ @Override public Object getItem(int position) { return mList.get(position); }/** * 获取指定行对应的ID * @param position * @return */ @Override public long getItemId(int position) { return position; }@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView==null){ /** * 将表单的标题与布局中的控件对应起来 */ viewHolder=new ViewHolder(); convertView=mLayoutInflater.inflate(R.layout.activity_queryallbill,null); viewHolder.mBillType=(TextView)convertView.findViewById(R.id.show_bill_type); viewHolder.mBillMoney=(TextView)convertView.findViewById(R.id.show_bill_money); viewHolder.mBillDate=(TextView)convertView.findViewById(R.id.show_bill_date); convertView.setTag(viewHolder); }else { viewHolder=(ViewHolder)convertView.getTag(); }//获取一个bill实体类,将bill的数据封装到表格的内容中Bill bill=mList.get(position); //这里获取数据返回给布局 viewHolder.mBillType.setText(bill.getType()); viewHolder.mBillMoney.setText(bill.getMoney()); viewHolder.mBillDate.setText(bill.getDate()); return convertView; } }
ViewHolder.java
package com.example.familybook.utils; /** * 这是一个表单标题类 */import android.widget.TextView; public class ViewHolder { public TextView mBillType; public TextView mBillMoney; public TextView mBillDate; }
activity_list.xml
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="@mipmap/queryallbill" android:layout_height="match_parent"> < ListView android:id="@+id/list_View" android:layout_width="match_parent" android:layout_height="match_parent"> < /ListView> < /LinearLayout>
activity_queryallbill.xml
< ?xml version="1.0" encoding="utf-8"?> < ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> < RelativeLayout android:id="@+id/query_all_bill" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="30dp" android:orientation="vertical" tools:context=".QueryAllActivity" > < TextView android:id="@+id/show_bill_type" android:text="账目类型" android:textSize="30dp" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"/> < TextView android:id="@+id/show_bill_money" android:layout_width="wrap_content" android:text="账目金额" android:textSize="30dp" android:layout_marginLeft="20dp" android:layout_toRightOf="@+id/show_bill_type" android:layout_height="wrap_content"/> < TextView android:id="@+id/show_bill_date" android:layout_width="wrap_content" android:text="账目日期" android:textSize="30dp" android:layout_marginLeft="20dp" android:layout_toRightOf="@id/show_bill_money" android:layout_height="wrap_content"/> < /RelativeLayout> < /ScrollView>
推荐阅读
- make(g++:在CentOS/RHEL 7上找不到命令-已修复)
- android------解决editText只输入一行和textView不显示过多的内容
- StrutsAPP_PATHStartSystemListener
- Writing a Foreign Data Wrapper
- 家庭记账小账本Android studio
- Android Studio 制作出来的9图无法进行拖拉,导致无法制作出正确的9图
- 15.Android-实现TCP客户端,支持读写
- uni-app云打包上架谷歌市场
- clr via c# clr寄宿和AppDomain