上一篇我们搭建了基础UI,这一次我们建立一下数据模型。
首先对于数据必须建立一个实体类,那么我们当前的实体类代码如下:
package cn.surine.sm.Pojo;
import org.litepal.crud.DataSupport;
/**
* Created by Surine on 2018/4/14.
*/
//订单实体
public class Order extends DataSupport {
private long id;
private String date; //日期
private String time; //时间
private String orderNumber; //订单编号
private String Buyer; //买家名
private String AmountOfRedEnvelopes; //红包金额
private String GeneralCommission; //总佣金
private String ActualCommission; //实际佣金
private String profit; //利润
private String commodity; //商品名
private String college; //学校名
private String isRefund; //是否退款
private String refundtatus; //退款状态
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getBuyer() {
return Buyer;
}
public void setBuyer(String buyer) {
Buyer = buyer;
}
public String getAmountOfRedEnvelopes() {
return AmountOfRedEnvelopes;
}
public void setAmountOfRedEnvelopes(String amountOfRedEnvelopes) {
AmountOfRedEnvelopes = amountOfRedEnvelopes;
}
public String getGeneralCommission() {
return GeneralCommission;
}
public void setGeneralCommission(String generalCommission) {
GeneralCommission = generalCommission;
}
public String getActualCommission() {
return ActualCommission;
}
public void setActualCommission(String actualCommission) {
ActualCommission = actualCommission;
}
public String getProfit() {
return profit;
}
public void setProfit(String profit) {
this.profit = profit;
}
public String getCommodity() {
return commodity;
}
public void setCommodity(String commodity) {
this.commodity = commodity;
}
public String getCollege() {
return college;
}
public void setCollege(String college) {
this.college = college;
}
public String getIsRefund() {
return isRefund;
}
public void setIsRefund(String isRefund) {
this.isRefund = isRefund;
}
public String getRefundtatus() {
return refundtatus;
}
public void setRefundtatus(String refundtatus) {
this.refundtatus = refundtatus;
}
public Order(long id, String date, String time, String orderNumber, String buyer, String amountOfRedEnvelopes, String generalCommission, String actualCommission, String profit, String commodity, String college, String isRefund, String refundtatus) {
this.id = id;
this.date = date;
this.time = time;
this.orderNumber = orderNumber;
Buyer = buyer;
AmountOfRedEnvelopes = amountOfRedEnvelopes;
GeneralCommission = generalCommission;
ActualCommission = actualCommission;
this.profit = profit;
this.commodity = commodity;
this.college = college;
this.isRefund = isRefund;
this.refundtatus = refundtatus;
}
public Order() {
}
}
这里继承了DataSupport,因为我们这里使用了Litepal这款框架。
(LitePal全集:https://blog.csdn.net/u013277740/article/details/71173010)
Litepal第一步
1.导入依赖
compile 'org.litepal.android:core:1.3.0'
2.构建litepal基本信息
在src/main/assets/目录下建立litepal.xml文件描述litepal
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名-->
<dbname value="Order" ></dbname>
<!--数据库版本-->
<version value="1" ></version>
<!--数据表,对应实体类-->
<list>
<mapping class="cn.surine.sm.Pojo.Order"></mapping>
</list>
</litepal>
3.配置application
增加一行
android:name="org.litepal.LitePalApplication"
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name="org.litepal.LitePalApplication"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
…//省略的代码…
4.最后一步,就是建立实体类啦,注意要继承自DataSupport,也就是上面的一大片代码。
建立了Pojo实体和数据库的联系之后,进行增删改查的操作就很容易了。
修改一下MainActivity.java
实现数据库初始化
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//数据库初始化
Connector.getDatabase();
updateFragment(f1);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
2018年4月14日 20点23分
刚读了一会英语,现在搭建list。
我们使用的是BRVAH这款框架(参考:https://www.jianshu.com/p/b343fcff51b0)
1.首先增加依赖
先在 build.gradle(Project:XXXX) 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后在 build.gradle(Module:app) 的 dependencies 添加:
dependencies {
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
}
2.建立列表的话我喜欢第一步先添加RecyclerView和Fab
修改fragment_first.xml文件,添加RecyclerView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycleview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_margin="16dp"
android:id="@+id/add"
android:src="@drawable/ic_edit_add_24dp"
/>
</RelativeLayout>
3.然后建立item.xml布局,设计布局去了……不要吵。
十分钟后回来。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginBottom="5dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="13dp"
android:layout_marginTop="12dp"
android:text="4.13"
android:textColor="@color/colorAccent"
android:textSize="38sp" />
<TextView
android:id="@+id/orderName"
android:layout_width="match_parent"
android:ellipsize="marquee"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/data"
android:layout_marginStart="21dp"
android:layout_marginTop="5dp"
android:layout_toEndOf="@+id/data"
android:text="《第一行代码 第二版》等全套书籍"
android:textColor="@android:color/background_dark"
android:textSize="15sp"
android:textStyle="bold"
android:singleLine="true" />
<TextView
android:id="@+id/orderNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_alignBottom="@id/data"
android:layout_alignStart="@+id/orderName"
android:layout_below="@+id/orderName"
android:text="112345678765432345" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lin1"
android:layout_margin="15dp"
android:layout_below="@id/orderNumber"
>
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/data"
android:layout_below="@+id/orderNumber"
android:text="买家名:"
android:layout_weight="1"
android:textColor="@android:color/background_dark" />
<TextView
android:id="@+id/name"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView6"
android:layout_toEndOf="@+id/textView6"
android:text="NAME" />
<TextView
android:id="@+id/textView10"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/name"
android:layout_centerHorizontal="true"
android:text="学校:"
android:textColor="@android:color/background_dark" />
<TextView
android:id="@+id/school"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView10"
android:layout_toEndOf="@+id/textView10"
android:layout_weight="1"
android:text="SCHOOL" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="利润:"
android:textColor="@android:color/background_dark" />
<TextView
android:id="@+id/profit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="MON" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_below="@id/lin1"
android:layout_margin="10dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView7"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="红包:"
android:textColor="@android:color/background_dark" />
<TextView
android:id="@+id/redbag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView7"
android:layout_toEndOf="@+id/textView7"
android:layout_weight="1"
android:text="REDBAG" />
<TextView
android:id="@+id/textView8"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/redbag"
android:layout_alignBottom="@+id/redbag"
android:text="总佣金:"
android:textColor="@android:color/background_dark" />
<TextView
android:id="@+id/GeneralCommission"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView8"
android:layout_toEndOf="@+id/textView8"
android:text="ALL" />
<TextView
android:id="@+id/textView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/GeneralCommission"
android:layout_weight="1"
android:text="实际佣金:"
android:textColor="@android:color/background_dark" />
<TextView
android:id="@+id/ActualCommission"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView14"
android:layout_toEndOf="@+id/textView14"
android:layout_weight="1"
android:text="ACT" />
</LinearLayout>
<Button
android:id="@+id/isRefund"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/orderNumber"
android:layout_alignParentBottom="true"
android:text="退款" />
<Button
android:id="@+id/RefundStatus"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/isRefund"
android:layout_toStartOf="@+id/isRefund"
android:text="退款状态" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/data"
android:layout_alignTop="@+id/RefundStatus"
android:layout_marginTop="14dp"
android:text="20点53分" />
</RelativeLayout>
</android.support.v7.widget.CardView>
这里是第一版布局,粗略的设计一下。
4.实现Adapter
package cn.surine.sm.Adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
import cn.surine.sm.Pojo.Orders;
import cn.surine.sm.R;
/**
* Created by Surine on 2018/4/14.
*/
public class OrderAdapter extends BaseQuickAdapter<Orders, BaseViewHolder> {
public OrderAdapter(int layoutResId, List data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, Orders item) {
helper.setText(R.id.data,item.getDate());
helper.setText(R.id.orderName,item.getCommodity());
helper.setText(R.id.orderNumber,item.getOrderNumber());
helper.setText(R.id.name,item.getBuyer());
helper.setText(R.id.school,item.getCollege());
helper.setText(R.id.profit,item.getProfit());
helper.setText(R.id.redbag,item.getAmountOfRedEnvelopes());
helper.setText(R.id.GeneralCommission,item.getGeneralCommission());
helper.setText(R.id.ActualCommission,item.getActualCommission());
helper.setText(R.id.time,item.getTime());
helper.setText(R.id.RefundStatus,item.getRefundtatus());
}
}
这个没啥好说的,框架里的设计方法,不清楚的可以仔细研究一下这个框架。
5.使用,修改FirstFragment.java
private OrderAdapter adapter;
private List<Orders> data = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//引用创建好的xml布局
View view = inflater.inflate(R.layout.fragment_first, container, false);
unbinder = ButterKnife.bind(this, view);
recycleview.setLayoutManager(new LinearLayoutManager(getActivity()));
//初始化数据,可以先弄假数据来测试
init();
//配置适配器
adapter = new OrderAdapter(R.layout.item_order,data);
recycleview.setAdapter(adapter);
return view;
}
实际效果图:
《小曼的账本》开发记录 【2.建立数据模型,搭建列表】这里测试了一下,每次切换页面的时候数据都会接着加载一部分,这里不用担心,我们会在后面优化。
好了,本篇文章就到这里啦。
下一篇我们将从增加数据开始做起,同时优化一些细节。
网友评论